使用非逻辑的While循环

时间:2019-05-20 19:18:20

标签: python while-loop logic nor

我正尝试在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: ")

2 个答案:

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