我正在尝试用Python 3编写一段代码,将温度和距离从一个单位转换到另一个单位。我被告知我需要使用函数,用户将输入F (华氏度)、C(摄氏度)或K (开尔文),温度将从他们选择的任何温度转换为F、C或K。因此,我为每个场景编写了一个函数。一个函数,如果它是从F转换而来的,另一个是如果它是从C转换而来的,另一个是如果它是从K转换而来的。我还对英寸、英尺、码和英里做了这个操作。
所以在我写完所有的函数后,我写了一个if、elif和else语句,我想根据用户输入的内容来调用每个函数。因此,如果用户输入"F“,我希望它调用convert_from_F()函数,或者如果他们放入"K”,我希望它使用convert_from_K(),或者如果用户输入“英寸”,我希望它使用convert_from_inch()函数。我认为这样做的方法应该是使用if、elif和else语句。然而,无论我输入什么,我总是得到错误消息:
NameError:未定义名称'F‘
如果它发现用户没有输入特定的指令,我会认为迭代会在每条语句之后继续。如果我(作为用户)输入‘F’,它也不起作用。我不确定如何修复这段代码。我遗漏了什么?
此外,我正在使用在线Python3编译器来编写我的程序: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的新手,所以我完全有可能不能像更有经验的人那样建立联系。我在这里收到的答案确实对我有帮助。
发布于 2018-07-25 05:13:01
您的if
构造错误。它必须是if user_input == 'F' or user_input == 'f':
或者,您可以将其简短地写为
if user_input in ['F', 'f']:
或在注释中指定为
if user_input.lower() == 'f':
发布于 2018-07-25 05:12:52
您需要引用该值并修复测试,因此
if user_input == F or f:
成为
if user_input == "F" or user_input == "f":
其他行也是如此
发布于 2018-07-25 05:15:27
你必须在或的两边都有条件。所以:
def user_conversion():
if user_input == 'F' or user_input == 'f':
convert_from_F()
...
或者你可以直接使用
def user_conversion():
if user_input.lower() == 'f':
convert_from_F()
...
https://stackoverflow.com/questions/51507592
复制相似问题