我一直试图弄清楚我为将摄氏温度转换为华氏温度,华氏温度转换为摄氏温度,将摄氏温度转换为开尔文而编写的程序出了什么问题。我假设这与混合int和str有关。我可能错了。
def menu():
print("Make a selection:")
print("\n1. Convert Celsius to Fahrenheit")
print("2. Convert Fahrenheit to Celsius")
print("3. Convert Celsius to Kelvin")
print("4. Exit")
choice = int(raw_input("Enter your choice: "))
return choice
def c(f):
return str((f - 32) / 1.8)
def f(c):
return str((c * 100) + 32)
def k(c):
return str(c + 273.15)
def main():
choice = menu()
while choice != 4:
if choice == 1:
#convert C to F
c = eval(raw_input("Enter Degrees Celsius: "))
print(str(c) + "C = " + str(f)) + "F"
elif choice == 2:
#Convert F to C
f = eval(raw_input("Enter Degrees Fahrenheit: "))
print(str(f) + "F = " + str(c)) + "C"
elif choice == 3:
#Convert C to K
k = eval(raw_input("Enter Degrees Celsius: "))
print(str(c) + "C = " + str(k)) + "K"
else:
print('Invalid Entry!')
choice = menu()
main()
在线解析时,我的输出如下:
Make a selection:
1. Convert Celsius to Farenheit
2. Convert Farenheit to Celsius
3. Convert Celsius to Kelvin
4. Exit
Enter your choice: Traceback (most recent call last):
Line 39, in <module>
main()
Line 21, in main
choice = menu()
Line 7, in menu
choice = int(raw_input("Enter your choice: "))
EOFError
你能告诉我我的错误是什么吗? int
&amp; str
? raw_input
vs input
?
答案 0 :(得分:-1)
将您的函数重命名为与变量不同。如果您的转换函数与变量具有相同的名称,Python 3将会出现此错误:
null
Python会将字母解释为变量而不是函数。此外,您还必须包含函数参数。我将UnboundLocalError: local variable 'f' referenced before assignment
功能更改为f(c)
,将foo(c)
更改为str(f)
,程序按预期工作。
请注意,您在某些str(foo(c))
语句中错过了结尾)
。 Python 3中print()
需要括号。
另请注意,从摄氏度到华氏度的转换应为print()
,而不是(c * 1.8) + 32
。