我正在尝试在python中为类创建一个简单的菜单,但是,每当我输入一个选项时,例如,1 - 5,我总是在我的代码中得到我的下一个if语句,这是“错误的选择,重来” 我的问题是为什么python继续打印我的代码中的下一个if语句(“错误的答案,重新开始”)当我从1到5输入一个选项而不是保存它并移动到我的代码中的下一行应该是收入投入
def main():
print("\t\t\tMain Menu")
print("\t\t\t=========")
print ("\n\t\t1- Single")
print ("\t\t2- Jointley (Married)")
print ("\t\t3- Married Filing Seperatley")
print ("\t\t4- Head of HouseHold")
print ("\t\t5- Quit")
choice = input("\n\n\t\t\tEnter your choice : ").upper()[0]
if (choice == '1'):
choice = 'S'
elif (choice == '2'):
choice = 'J'
elif (choice == '3'):
choice = 'M'
elif (choice == '4'):
choice = 'H'
elif (choice == '5'):
choice = 'Q'
if (choice != 'S' or choice != 'J' or choice != 'M' or choice != 'H' or choice != 'Q'):
print("wrong Choice, Start over")
else:
income = float (input("Enter your Gross Income from Your W-2 form: "))
main()
input("Press Enter to Continue")
答案 0 :(得分:1)
根据你的情况:
if (choice != 'S' or choice != 'J' or choice != 'M' or choice != 'H' or choice != 'Q'):
您希望简单地检查选择是否不是您期望的任何字母,因此您应该使用not in
执行此操作:
if choice not in ('S', 'J', 'M', 'H', 'Q'):
此外,你在这里做的是:
input("\n\n\t\t\tEnter your choice : ").upper()[0]
不要让他们进入整个选择。只是数字。所以你只需要输入,因为它将是数字的字符串表示,不需要upper
:
input("\n\n\t\t\tEnter your choice : ")
答案 1 :(得分:0)
您的代码移至上一个if
语句的原因是or
。
if (choice != 'S' or choice != 'J' or choice != 'M' or choice != 'H' or choice != 'Q'):
例如,如果choice == 'S'
为真,则表示choice != 'J'
也为真,因此无论choice
是什么,该行都将为真。更改为and
将解决问题。
if choice != 'S' and choice != 'J' and choice != 'M' and choice != 'H' and choice != 'Q':
测试它的小例子:
>> choice = 'S'
>> print(choice == 'S')
>> print(choice != 'Q')
>> print(choice == 'Q')
>> print(choice != 'S' or choice != 'Q')
True
True
False
True
此外,Python中的if
语句不需要括号,它们是多余的。