提问人:Amzo 提问时间:5/21/2019 最后编辑:Mad PhysicistAmzo 更新时间:5/21/2019 访问量:117
while 循环使用 nor 逻辑
While Loop Using Nor Logic
问:
我正在尝试在 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赞
chepner
5/21/2019
#1
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):
评论
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)
评论
not Selection == 1 or Selection == 2
与 不同。你可能指的是后者。not (Selection == 1 or Selection == 2)