使用 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)
我正在尝试在 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)