首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Nor逻辑的While循环

使用Nor逻辑的While循环
EN

Stack Overflow用户
提问于 2019-05-21 03:18:20
回答 2查看 89关注 0票数 0

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

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

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

我知道我可以使用while Truebreak,这是我通常的方式,我只是试图用一种不同的方式使用逻辑来实现它。

代码语言:javascript
复制
while not Selection == 1 or Selection == 2:
    Menus.Main_Menu()
    Selection = input("Enter a number: ")
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-21 03:21:01

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

代码语言:javascript
复制
while (not Selection == 1) or Selection == 2:

您需要显式的圆括号

代码语言:javascript
复制
while not (Selection == 1 or Selection == 2):

或者not的两种用法(以及相应的切换到and):

代码语言:javascript
复制
while not Selection == 1 and not Selection == 2:
# while Selection != 1 and Selection != 2:

不过,最具可读性的版本可能需要切换到not in

代码语言:javascript
复制
while Selection not in (1,2):
票数 0
EN

Stack Overflow用户

发布于 2019-05-21 03:23:34

你想要的也不是

代码语言:javascript
复制
not (Selection == 1 or Selection == 2)

或者另选地

代码语言:javascript
复制
Selection != 1 and Selection != 2

上面的两个表达式彼此等价,但不等于

代码语言:javascript
复制
not Selection == 1 or Selection == 2

这相当于

代码语言:javascript
复制
Selection != 1 or Selection == 2

因此,为了

代码语言:javascript
复制
not (Selection == 1 and Selection != 2)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56226905

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档