while 循环使用 nor 逻辑

While Loop Using Nor Logic

提问人:Amzo 提问时间:5/21/2019 最后编辑:Mad PhysicistAmzo 更新时间:5/21/2019 访问量:117

问:

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

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

我想使用 NOR 逻辑,因为如果一个或两个值都为 true,它将返回 false,并且在 false 时循环应该中断,但是即使我输入 1 或 2,循环也会继续循环。

我知道我可以使用,而且只是使用我通常的做法,我只是想用逻辑以不同的方式实现它。while Truebreak

while not Selection == 1 or Selection == 2:
    Menus.Main_Menu()
    Selection = input("Enter a number: ")
python while-loop 逻辑 nor

评论

0赞 Mad Physicist 5/21/2019
not Selection == 1 or Selection == 2 不同。你可能指的是后者。not (Selection == 1 or Selection == 2)

答:

0赞 chepner 5/21/2019 #1

not具有更高的优先级;您的尝试被解析为or

while (not Selection == 1) or Selection == 2:

你要么需要明确的括号

while not (Selection == 1 or Selection == 2):

或两种用途(并相应地切换到):notand

while not Selection == 1 and not Selection == 2:
# while Selection != 1 and Selection != 2:

不过,最易读的版本可能涉及切换到:not in

while Selection not in (1,2):

评论

0赞 Amzo 5/21/2019
我没有意识到更高的优先级。切换到:有效,似乎输入数字被保存为字符串而不是整数,所以我不得不使用引号while not (Selection == "1" or Selection == "2")
0赞 Mad Physicist 5/21/2019 #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)