Python while循环在满足指定条件后未结束

Python while循环在满足指定条件后未结束,python,loops,Python,Loops,我试图通过制作简单的程序来学习Python。我的一个想法是创建一个只要不满足条件就循环的程序。代码如下: 只要没有输入a、b或c,它就应该继续循环并重新请求响应。问题是,即使在我输入a、b或c之后,它仍然告诉我它不是选项之一(也就是说,即使退出循环的条件似乎已满足,它仍保留在while循环中。)为什么不为操作分配我输入的值以退出循环?您需要使用and而不是or。如果满足任何条件,or运算符的计算结果为true。所以如果你选择a,它仍然是真的,因为它不是b或c 试试这个: print("Wha

我试图通过制作简单的程序来学习Python。我的一个想法是创建一个只要不满足条件就循环的程序。代码如下:




只要没有输入a、b或c,它就应该继续循环并重新请求响应。问题是,即使在我输入a、b或c之后,它仍然告诉我它不是选项之一(也就是说,即使退出循环的条件似乎已满足,它仍保留在while循环中。)为什么不为操作分配我输入的值以退出循环?

您需要使用and而不是or。如果满足任何条件,or运算符的计算结果为true。所以如果你选择a,它仍然是真的,因为它不是b或c

试试这个:

print("What would you like to do?")
action = input("a. eat it   b. cook it  c. toss it\n>").lower()
while action != "a" and action!= "b" and action!="c":
    print("That is not one of your options.")
    action = input(">")
if action == "a":
    print("You eat it.")
elif action == "b":
    print("You cook it.")
elif action == "c":
    print("You throw it away.")

您创建条件的方式
操作!=“a”或“b”或“c”:
循环中
始终为
。因为
“b”
“c”
将被评估为
True

您需要按以下方式更改条件,并需要将
替换为

action != "a" and action != "b" and action != "c":
另一种方法是:

"abc".find(action) != -1 and len(action) == 1:
action not in ["a", "b", "c"]:
另一种方式可以是以下方式:

"abc".find(action) != -1 and len(action) == 1:
action not in ["a", "b", "c"]:

你所做的测试永远不会返回
False
,因为
“b”和
“c”都被视为“真实的”值,你说的是“当动作不是a或(“b”或“c”为真)”——可能不是你想要表达的

您可以更准确地表示您的情况,如下所示:

当动作不在(“a”、“b”、“c”)时:
...

此外,在这种情况下,
dict
是一种很好的方法。您能想出一种方法将有效命令及其引起的响应存储在字典中吗?

这是否回答了您的问题?谢谢你的主意。你能解释一下字典是如何处理这个问题的吗?对于初学者来说,这听起来不是很简单(但我想学习!)。您基本上是将一个选择(a、b、c…)映射到一个输出(您吃掉它…)。字典是从一个值到另一个值的“映射”。此外,您还可以使用
中的
轻松检查字典中的成员资格;或者,如果给定的选项不存在,您也可以简单地捕获
KeyError