我正尝试在python中创建一个控制台菜单,该菜单中的选项列出为1或2。选择数字将打开下一个菜单。
我决定尝试使用while
循环来显示菜单,直到选择了正确的数字为止,但是我在逻辑上遇到了问题。
我想使用NOR逻辑,因为如果其中一个或两个值都为true,则它返回false,并且在false时循环应该中断,但是即使我输入1或2,循环也会保持循环。
我知道我可以使用while True
并只使用break
,这是我通常的做法,我只是想使用逻辑方法以另一种方式实现它。
while not Selection == 1 or Selection == 2:
Menus.Main_Menu()
Selection = input("Enter a number: ")
答案 0 :(得分:0)
not
的优先级高于or
;您的尝试被解析为
while (not Selection == 1) or Selection == 2:
您需要明确的括号
while not (Selection == 1 or Selection == 2):
或not
的两种用法(以及对and
的相应切换):
while not Selection == 1 and not Selection == 2:
# while Selection != 1 and Selection != 2:
最易读的版本可能涉及切换到not in
:
while Selection not in (1,2):
答案 1 :(得分:0)
您想要的NOR要么是
not (Selection == 1 or Selection == 2)
或者
Selection != 1 and Selection != 2
以上两个表达式彼此等效,但不等同于
not Selection == 1 or Selection == 2
这等效于
Selection != 1 or Selection == 2
因此
not (Selection == 1 and Selection != 2)