gpt4 book ai didi

python - 为什么我的 python 程序给出 if/else 语句中的变量未定义的错误?

转载 作者:行者123 更新时间:2023-11-30 22:11:11 27 4
gpt4 key购买 nike

我正在尝试用 Python 3 编写一段代码,将温度和距离从一个单位转换为另一个单位。有人告诉我,我需要使用函数,用户将输入 F(华氏度)、C(摄氏度)或 K(开尔文),温度将从他们选择的任何值转换为 F、C 或 K。所以我为每个场景编写了一个函数。如果是从 F 转换而来,则为一个函数;如果是从 C 转换而来,则为另一个函数;如果是从 K 转换而来,则为另一个函数。我还对英寸、英尺、码和英里执行了此操作。

因此,在编写了所有函数之后,我编写了一个 if、elif 和 else 语句,我想根据用户输入的内容来调用每个函数。因此,如果用户输入“F”,我希望它调用convert_from_F()函数,或者如果他们输入“K”,我希望它使用convert_from_K(),或者如果用户输入“inch”,我希望它使用Convert_from_inch() 函数。我认为做到这一点的方法是使用 if、elif 和 else 语句。但是,无论我输入什么内容,我总是会收到错误消息:

名称错误:名称“F”未定义

我本以为,如果发现用户没有输入该特定指令,迭代将继续经过每个语句。如果我(作为用户)输入“F”,它也不起作用。我不确定如何修复此代码。我从中错过了什么?

此外,我正在使用在线 python 3 编译器来编写我的程序:OnlineGDB

def convert_from_F():
F = float(input("Please input the temperature in F: "))
print("Temperature in F is", F)
print("Temperature in C is", (F-32)*5/9)
print("Temperature in K is", (F-32)*5/9 + 273.15)

def convert_from_C():
C = float(input("Please input the temperature in C: "))
print("Temperature in F is", (C*9/5) + 32)
print("Temperature in C is", C)
print("Temperature in K is", C+273.15)

def convert_from_K():
K = float(input("Please input the temperature in K: "))
print("Temperature in F is", (K-273.15)*9/5 + 32)
print("Temperature in C is", K-273.15)
print("Temperature in K is", K)

def convert_from_inch():
inch = float(input("Please input the distance in inches: "))
print("Distance in inches is:", inch)
print("Distance in feet is:", inch/12)
print("Distance in yards is:", inch/36)
print("Distance in miles is:", inch/63360)

def convert_from_ft():
ft = float(input("Please input the distance in feet: "))
print("Distance in inches is:", ft*12)
print("Distance in feet is:", ft)
print("Distance in yards is:", ft/3)
print("Distance in miles is:", ft/5280)

def convert_from_yd():
yd = float(input("Please input the distance in yards: "))
print("Distance in inches is:", yd*36)
print("Distance in feet is:", yd*3)
print("Distance in yards is:", yd)
print("Distance in miles is:", yd*1760)

def convert_from_mi():
mi = float(input("Please input the distance in miles: "))
print("Distance in inches is:", mi*63360)
print("Distance in feet is:", mi*5280)
print("Distance in yards is:", mi*1760)
print("Distance in miles is:", mi)

print("To convert distance input inch, ft, yd, or mi. To convert \
temperatures please input F, C, or K. ")
user_input = input("Your input: ")

def user_conversion():
if user_input == F or f:
convert_from_F()
elif user_input == C or c:
convert_from_C()
elif user_input == K or k:
convert_from_K()
elif user_input == inch:
convert_from_inch()
elif user_input == ft:
convert_from_ft
elif user_input == yd:
convert_from_yd()
elif user_input == mi:
convert_from_mi()
else:
print("Invalid input.")

print(user_conversion())

编辑:我看到这被标记为可能的重复项。重复的问题对我没有帮助,我并不是想把它变成一个集合,我只是想弄清楚如何运行 if 语句。针对我的问题给出的解决方案与针对其他问题的解决方案不同。然而,我是 Python 新手,所以我完全有可能无法建立更有经验的人可以建立的联系。我在这里收到的答案确实对我有帮助。

最佳答案

您的 if 构造是错误的。它必须是 if user_input == 'F' 或 user_input == 'f':

或者您可以将其简单地写为

if user_input in ['F', 'f']:

或者按照评论中指定的方式

if user_input.lower() == 'f':

关于python - 为什么我的 python 程序给出 if/else 语句中的变量未定义的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51507592/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com