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 に答える