2012-11-08 4 views
1

Python 3.3에서 문자열에 대한 ValueError 만 제외 할 방법이 있습니까? k에 문자열을 입력하면 "음수의 제곱근을 취할 수 없습니다."가 아닌 "문자열을 부동으로 변환 할 수 없습니다"를 인쇄하려고합니다.파이썬 : 문자열에만 ValueError 예외.

while True: 
    try: 
     k = float(input("Number? ")) 

....

except ValueError: 
     print ("Cannot take the square root of a negative number") 
     break 
    except ValueError: 
     print ("Could not convert string to float") 
     break 
+2

왜 'ValueError'를 제외하고 2 점입니까? –

+0

코드의 어느 곳에서든 제곱근을 사용하지 않으므로 그 첫 번째 'ValueError 제외'가있는 이유는 무엇입니까? –

+0

저는이 일을 제대로하지 않았기 때문에 초보자입니다. 인쇄하려면 두 개의 별도 메시지가 필요합니다. 하나는 음수, 하나는 문자열입니다. 한 가지 예외로이 작업을 수행하는 방법을 잘 모르겠습니다. – Ace

답변

6

당신이 그들의 기원에 따라 다른 예외를 처리하는 경우, 그것은 예외를 던질 수있는 다른 코드 부분을 분리하는 것이 가장 좋습니다. 그런 다음 그냥 예외를 throw 각각의 문, 예를 들면 주위에 try/except 블록을 넣을 수 있습니다 :

while True: 
    try: 
     k = float(input("Number? ")) 
    except ValueError: 
     print ("Could not convert string to float") 
     break 
    try: 
     s = math.sqrt(k) 
    except ValueError: 
     print ("Cannot take the square root of a negative number") 
     break 
+0

대단히 감사합니다. 정확히 내가 필요로하는 것. – Ace

0

쉽고, 단지 제거 다른 except ValueError :

while True: 
    try: 
     k = float(input("Number? ")) 

....

except ValueError: 
     print ("Could not convert string to float") 
     break 

숫자가 음수인지 확인하려면 음수인지 확인하십시오. 음수인지 확인하십시오.

if k < 0: 
    print("Number is negative!")