最初に作ったコードがこれ。

────────────────

#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を使ってエラーハンドリングに挑戦できたのもよかったかなと思います。

以上。

投稿者 YOHEY_mk

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA