Python:除了字符串的ValueError。

时间:2012-11-08 21:02:54

标签: python except

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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!")