Fahrenheit,Celsius,Kelvin Conversion的EOFError

时间:2016-01-29 06:16:40

标签: python

我一直试图弄清楚我为将摄氏温度转换为华氏温度,华氏温度转换为摄氏温度,将摄氏温度转换为开尔文而编写的程序出了什么问题。我假设这与混合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; strraw_input vs input

1 个答案:

答案 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