1

Python 3.3 中是否有一种方法只能将 ValueError 排除在字符串之外?如果我在 k 中键入一个字符串,我希望打印“无法将字符串转换为浮点数”,而不是“不能取负数的平方根”。

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
4

2 回答 2

6

如果要根据其来源处理不同的异常,最好将可能引发异常的不同代码部分分开。然后,您可以在引发异常的相应语句周围放置一个 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
于 2012-11-08T21:07:34.240 回答
1

简单,只需删除您的其他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!")
于 2012-11-08T21:07:43.243 回答