使用 Nor 逻辑的 While 循环

While Loop Using Nor Logic

我正在尝试在 python 中创建一个控制台菜单,其中列出了菜单中的选项 1 或 2。选择数字将打开下一个菜单。

我决定尝试使用 while 循环来显示菜单,直到选择了正确的数字,但我遇到了逻辑问题。

我想使用 NOR 逻辑,因为如果一个或两个值都为真,那么 returns 为假,循环应该在假时中断,但是即使我输入 1 或 2,循环也会继续循环。

我知道我可以使用 while True 并且只使用 break 这就是我通常的做法,我只是尝试使用逻辑以不同的方式实现它。

while not Selection == 1 or Selection == 2:
    Menus.Main_Menu()
    Selection = input("Enter a number: ")

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):

你想要的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)