While/if 循环给我带来麻烦(初学者)

While/if loop giving me trouble (beginner)

我一直在尝试制作我的第一个 "solo" python 程序,它是一个计算器,您可以在其中选择要计算的公式类型,然后输入所需的变量。我的 while/for 循环出现问题,当我 运行 程序时我得到正确的菜单:menu(),然后当我通过输入 1 选择我的下一个菜单时我正确地得到 "v_menu" 但是,如果我输入 2,这应该让我得到 "m_menu",我反而只得到 v_menu,就像我输入 1.

一样

我希望我的解释是有道理的,我对这一切还是很陌生。感谢我能得到的任何帮助,为此至少花了一个小时左右的时间让我头疼..

干杯,这是我的代码: # 编码=utf-8

#Menues
def menu():
    print "Choose which topic you want in the list below by typing the corresponding number\n"
    print "\t1) virksomhedsøkonomi\n \t2) matematik\n"
    return raw_input("type the topic you want to pick\n >>")


def v_menu():
    print "Choose which topic you want in the list below by typing the corresponding number"
    print "\t1) afkastningsgrad\n \t2) overskudsgrad\n \t3) aktivernes omsætningshastighed\n \t4)                          Egenkapitalens forrentning\n \t5) return to main menu\n"
    return raw_input("Type the topic you want to pick\n >>")

def m_menu():
    print "Choose which topic you want in the list below by typing the corresponding number"
    print "\t1) omregn Celsius til Fahrenheit\n \t2) omregn Fahrenheit til Celsius\n"
    return raw_input("Type the topic you want to pick\n >>")

    # - Mat -

#Celsius to Fahrenheit
def c_to_f():
    c_temp = float(raw_input("Enter a temperatur in Celsius"))
    #Calculates what the temperatur is in Fahrenheit
    f_temp = c_temp * 9 / 5 + 32
    #Prints the temperatur in Fahrenheit
    print (str(c_temp) + " Celsius is equal to " + str(f_temp) + " Fahrenheit")


#Fahrenheit to Celsius
def f_to_c(): 
    f_temp = float(raw_input("Enter a temperatur in Fahrenheit"))
    #Calculates what the temperatur is in celsius
    c_temp = (f_temp - 32) * (float(100) / 180)
    #Prints the temperatur in celsius
    print (str(f_temp) + " Fahrenheit is equal to " + str(c_temp) + " Celsius")


#Program
loop = 1
choice = 0



while loop == 1:
    choice = menu()

    if choice == "1" or "1)":
        v_menu()

    elif choice == "2" or "2)":
        m_menu()
        if choice == "1":
            c_to_f()
        elif choice == "2":
            f_to_c()

    loop = 0

您的问题出在您的 if 语句中:if choice == "1" or "1)":

你真正需要的是:if choice == "1" or choice == "1)":

or 之后的所有内容都被评估为另一个表达式。你是说 "if choice is equal to one or if one exists."

"1)" 在这种情况下计算为 "true",因此您将始终点击该分支。

问题就在这里;

if choice == "1" or "1)":
    v_menu()

elif choice == "2" or "2)":

你必须这样写;

if choice == "1" or choice == "1)":
        v_menu()

elif choice == "2" or choice == "2)":

否则,您的 if 语句始终是 True。如果第一个 if 语句是 True,那么您的 elif 语句将不起作用。这就是为什么你不能调用 v_menu()