2016-10-05 3 views
-1

안녕하세요 python 커뮤니티,오류 특정 경계 캡처

어떻게하면 루핑을 중지 할 수 있습니까?

error33 = int(2) 
    while error33 > 1: 
     while True: 
       try: 
        survivalrateforjuveniles = float(input("Please enter the survival rate for poomen"))##Float input is being used as 
        break 
       except ValueError: 
        print("Please enter a number between 0 and 1") 
        continue 
       else: 
        break 

많은 감사

+2

'error33' 절대로 변경되지 않으십니까? 그러면 멈추지 않을 것입니다. – fzzle

+1

코드를 작성 하시겠습니까? – PortableGibbon

+1

이 코드에서는 많은 부분이 잘못되었습니다. int를 int로 변환 할 필요가 없습니다. 'error33 = 2'는 좋습니다. 당신의 상태는 결코 수정되지 않고 전혀 사용되지 않는'error33'에 있습니다. 당신은 다른 하나의 내부에 두 개의 'while'이 있는데, 그 중 하나는 끝나지 않습니다. 당신의 루프는'survivalrateforjuveniles'가 전혀 플로트가 아니라면 휴식을 취할 것입니다.'survivalrateforjuveniles'가 0과 1 사이의 부동 소수점이 아니라면 휴식을 원하고있는 것 같습니다. – Efferalgan

답변

-2

이 작동 ...

error33 = 2 
while error33 > 1: 
     while True: 
       try: 
        survivalrateforjuveniles = float(input("Please enter the survival rate for poomen\n")) 
        break 
       except ValueError: 
        print("Please enter a number between 0 and 1") 
        continue 
       else: 
        error33 = 0 
        break 

나는 당신이 일을 정확히 알고하지 않습니다 ...하지만 난이 비슷한 somehting를 사용하는 것이라고 생각 :

error33 = 2 
survivalrateforjuveniles = -1.0 
while error33 > 1: 
    while not (0 < survivalrateforjuveniles < 1): 
     survivalrateforjuveniles = input("Please enter the survival rate for poomen\n") 
     try: 
      survivalrateforjuveniles = float(survivalrateforjuveniles) 
     except ValueError: 
      survivalrateforjuveniles = -1 
     print("Please enter a number between 0 and 1") 

    print('do what you want') 
    error33 =0 

솔루션과 크게 다르지 않지만 사용자는 break이 필요하지 않으며 더 강력 해 보입니다. 그러나 survivalrate... 및 다른 입력 (내가 가진 것 같음)을 읽는 함수를 만드는 것은 동일한 코드 행을 두 번 이상 사용하지 않을 것이므로 훨씬 더 좋을 것입니다. 이는 좋은 소프트웨어를 작성하는 기본적인 방법 중 하나입니다. .

+1

그리고 'else'부분에서 'error33'을 변경해야한다는 것을 어떻게 알 수 있습니까? – Matthias

+0

@Matthias 방금 당신이 당신의 코드에서 사용할 모양이라고 생각했습니다. 특정 시점에서 루프를 종료하려면 해당 error33을 변경해야합니다. 원하는 곳에서 변경할 수 있습니다. 만약 그 입력이 float 이어야만한다는 사실에 비례한다면, 나는 'survivalrate ...'뒤에 그것을 바꿀 것이다. –