【问题标题】:why is my code running through my while loop, when the conditions are not met? [duplicate]当条件不满足时,为什么我的代码会在我的 while 循环中运行? [复制]
【发布时间】:2018-11-10 22:18:38
【问题描述】:

当我运行这段代码时,即使输入“1”或“2”或“3”,我的代码仍然会运行 while 循环。如何更改我的代码,使其仅在用户未输入“1”、“2”或“3”时运行 while 循环?非常感谢!

column=input("What column is your card in? Please enter either '1', '2' or '3':")
while column != "1" or "2" or "3": 
    print("That is an invalid choice. You must enter either '1' or '2' or '3'")
    column=input("What column is your card in? Please enter either '1', '2' or '3':")
print(column)

【问题讨论】:

  • 使用column not in {'1', '2', '3'};计算机不是人类,英语语法对计算机来说很难。
  • 问题是条件实际上是真的,因为它不是你所期望的。 “条件!= 1”部分评估,然后与或“2”组合。现在,布尔值接受并使用字符串,非空字符串被认为是真实的。将其与内部“或”的以下功能结合起来:对于“或”运算符,如果左值为真,则返回,否则如果左值为假,则返回右值。你去吧。希望有帮助。由于“或”2,整体条件将始终评估为 True。
  • 非常感谢!我的代码现在可以使用@MartijnPieters

标签: python-3.x loops while-loop


【解决方案1】:

你的条件应该是每次检查

while (column != "1") or (column != "2") or (column != "3"):

如果没有这个检查,你说它不为零,因此为真,while 循环的条件得到满足。因此条件满足。 2 或 3 不与列进行比较。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-25
    • 1970-01-01
    • 1970-01-01
    • 2020-11-16
    • 2021-12-13
    • 2019-05-16
    • 2019-01-29
    • 2013-11-22
    相关资源
    最近更新 更多