2017-11-03 1 views
0

고급 수준에서 Java를 배우고 난 후에 Python을 처음 사용했습니다. 예외 처리와 Java 입력 유효성 검사에서 나는 결코 약간 혼란스러워진다. :간단한 입력을 확인하여 예외 처리

여기서 0과 99 사이의 숫자 만 읽을 수있는 간단한 FizzBuzz programm의 예제. 그렇지 않은 경우, 예외가 던져 져야합니다 :

if __name__ == '__main__': 

def fizzbuzz(n): 
    try: 
     if(0<= n <= 99): 
      for i in range(n): 
       if i==0: 
        print("0") 
       elif (i%3==0 and i%7==0) : 
        print("fizzbuzz") 
       elif i%3==0: 
        print("fizz") 
       elif i%7==0: 
        print("buzz") 
       else: 
        print(i)  
    except Exception: 
     print("/// ATTENTION:The number you entered was not in between 0 and 99///") 

try: 
    enteredNumber = int(input("Please enter a number in between 0 and 99: ")) 
    fizzbuzz(enteredNumber) 
except Exception: 
    print("/// ATTENTION: Something went wrong here. Next time, try to enter a valid Integer ////") 

만약 내가 그것을 실행하고 예 123 코드가 종료되고 아무 일도 일어나지 않습니다.

+1

코드에서 예외가 발생하지 않습니다. Java를 "고급 수준"으로 배웠다면 예외를 throw하고 catch하는 것의 차이점을 알아야합니다. – khelwood

답변

0

당신은 fizzbuzz에서 예외()을 마련 할 필요가 만났다. 아래에서 시도하십시오.

if __name__ == '__main__': 

def fizzbuzz(n): 
    try: 
     if(0<= n <= 99): 
      for i in range(n): 
       if i==0: 
        print("0") 
       elif (i%3==0 and i%7==0) : 
        print("fizzbuzz") 
       elif i%3==0: 
        print("fizz") 
       elif i%7==0: 
        print("buzz") 
       else: 
        print(i) 
     else: 
      raise ValueError("Your exception message") 
    except Exception: 
     print("/// ATTENTION:The number you entered was not in between 0 and 99///") 

try: 
    enteredNumber = int(input("Please enter a number in between 0 and 99: ")) 
    fizzbuzz(enteredNumber) 
except Exception: 
    print("/// ATTENTION: Something went wrong here. Next time, try to enter a valid Integer ////") 

또한 일반 예외를 포착하는 대신 특정 예외를 잡아야합니다.

0

예외를 잡으려면 원하는 시나리오가 발생할 경우 예외가 발생해야합니다. 시도 사이 제외하고는 코드 블록이 자체적으로 예외를 발생하지 않기 때문에

, 당신은 스스로를 제기해야합니다 당신의 상태가 아닌 경우

try: 
    if(0<= n <= 99): 
     ... 
    else: 
     raise Exception() 
except Exception: 
    ... 
+0

그게 그다지 열심히 하하하지 않았다 : D 감사합니다 !! – ArdianH101