0

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

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

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

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

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

2 回答 2

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)
于 2019-05-20T19:23:33.660 回答
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):
于 2019-05-20T19:21:01.163 回答