最初に作ったコードがこれ。
────────────────
#Python temperature converter
unit = input("Is this temperature in Celsius or fahrenheit (C/F): ")
temp = float(input("Enter the temperature: "))
if unit == "C":
temp = round((9 * temp) / 5 + 32, 1)
print(f"The temperature in Fahrenheit is: {temp}")
elif unit == "F":
temp = round((temp - 32) * 5 / 9, 1)
print(f"The temperature in Celsius is: {temp}C")
else:
print(f"{unit} is an invalid unit of measurement")
────────────────
で、最終版がこれ。
────────────────
#Python temperature converter
unit = input("Is this temperature in Celsius or fahrenheit (C/F): ")
unit_cnv = unit.upper()
if unit_cnv not in ["C", "F"]:
print("You didn't enter a valid measurement! Try again.")
elif unit_cnv == "C" or unit_cnv == "F":
try:
temp = float(input("Enter the temperature: "))
print("You entered a valid number!")
except ValueError:
print("You didn't type a valid number. Try again.")
temp = None
if temp is not None:
if unit_cnv == "C":
temp_cnv = round((9 * temp) / 5 + 32, 1)
print(f"The temperature in Fahrenheit is: {temp_cnv}")
if unit_cnv == "F":
temp_cnv = round((temp - 32) * 5 / 9, 1)
print(f"The temperature in Celsius is: {temp_cnv}C")
────────────────
最初のコードだと、unitにCとF以外のものを入力しても温度の入力へと進み、
仮に温度を入力しても”{unit} is an invalid unit of measurement”と表示される。
なので、CとF以外のものを入力したら、その時点で”無効な測定単位ですよー”と表示させるようにしたかった。
それがこの箇所
unit = input(“Is this temperature in Celsius or fahrenheit (C/F): “)
unit_cnv = unit.upper()
if unit_cnv not in [“C”, “F”]:
print(“You didn’t enter a valid measurement! Try again.”)
C/Fを尋ねているけれど、最初のコードだと”c”と入力しても無効判定されてしまっていた。
なので、一旦小文字を大文字に揃える工程を挟んでいます。それがunit_cnv = unit.upper()の部分。
この部分を挟むと、仮にcとかfと入力してもC、Fに変換されるので、無効判定にはならない。
つぎに、if unit_cnv not in [“C”, “F”]:の部分で、
もしunit_cnvの値が、”C”か”F”でないなら、有効な値を入力してませんよと表示させています。
if, elif, elseの練習になったかなと思います。
また、もともとのコードにはなかったtry-exceptを使ってエラーハンドリングに挑戦できたのもよかったかなと思います。
以上。