Helloスタックオーバーフローコミュニティ。Pythonの 'except'節が動作しない
私は現在、Python(3.5)でプログラミングする方法を学習しようとしており、変換プログラムに問題がありました。要約すると、Pythonはソースコードのexcept節を無視しているようです。
try:
print("Welcome to CONVERSION. Choose an option.")
print("1. Convert CELSIUS to FAHRENHEIT.")
print("2. Convert FAHRENHEIT to CELSIUS.")
Option = int(input("OPTION: "))
except NameError:
print(Option, " is not a valid input.")
except ValueError:
print(Option, " is not a valid input.")
except KeyboardInterrupt:
print("Don't do that!")
else:
if (Option != 1) or (Option != 2):
print("Please input a valid option!")
elif (Option == 1):
try:
Celsius = float(input("Enter value in Celsius: "))
except ValueError:
print(Celsius, " is not a valid input.")
except KeyboardInterrupt:
print("Don't do that!")
else:
Fahrenheit = Celsius * 1.8 + 32
print(Celsius, "C = ", Fahrenheit, "F.")
elif (Option == 2):
try:
Fahrenheit = float(input("Enter value in Fahrenheit: "))
except ValueError:
print(Celsius, " is not a valid input.")
except KeyboardInterrupt:
print("Don't do that!")
Celsius = (Fahrenheit - 32) * (5/9)
print(Fahrenheit, "F = ", Celsius, "C.")
else:
print("That value is invalid. Try again.")
フルトレースバック、最初の画面に値「WAD」を入力
:あなたは、例外をキャッチした後、例外がスローされTraceback (most recent call last):
File "C:\Users\user\Documents\Visual Studio 2015\Projects\TempConversion\TempConversion\TempConversion.py", line 7, in <module>
Option = int(input("OPTION: "))
ValueError: invalid literal for int() with base 10: 'wad'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\Users\user\Documents\Visual Studio 2015\Projects\TempConversion\TempConversion\TempConversion.py", line 11, in <module>
print(Option, " is not a valid input.")
NameError: name 'Option' is not defined
エラーを慎重に読んでください:プログラムは "wad"を7行目の整数に変換しようとしますが、これは失敗します。整数変換が失敗したため、オプションが定義されていないため、エラーをキャッチして11行目とエラーを返します。だからあなたの意見をきめ細かくしてください。 – ChE
int( 'wad') 'がエラーを返すので、' Option'は決して定義されません。これを処理している間は、再び定義されていない 'Option'を出力しようとします。この時間は処理されない別のエラーが発生します。それはうまく動作します☺ –
質問自体には関係ありませんが、Pythonの規約は関数/変数のlower_caseとクラス名のUpperCaseです。また、if条件の周りに括弧は必要ありません。 – viraptor