Python:原始输入无效时重复函数

2024-09-29 05:27:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我想确定一个输入是否有效。我有:

servqual = raw_input(">").lower()
while servqual != "great" or "good" or "lacking" or "poor":
    print "I didn't understand that. Please try again."
    servqual = raw_input(">").lower()

但是,每当我在循环中运行它时,它总是假定为True,即使我输入了一个有效的答案。 我看过不同的答案,但在这种情况下似乎都不起作用。在


Tags: or答案inputrawthatlowergoodprint
2条回答
servqual != "great" or "good" or "lacking" or "poor"

相当于

^{pr2}$

而且由于字符串被认为是True,所以它总是正确的

正确的方法是

servqual != "great" and servqual != "good" and servqual != "lacking" and servqual != "poor"

或者

servqual not in ("great", "good", "lacking", "poor")

你的最终代码看起来像

servqual = raw_input(">").lower()
while servqual not in ("great", "good", "lacking", "poor"):
    print "I didn't understand that. Please try again."
    servqual = raw_input(">").lower()

您可以使用以下构造进一步改进它。在

while raw_input(">").lower() not in ("great", "good", "lacking", "poor"):
    print "I didn't understand that. Please try again."

你有:

while servqual != "great" or "good" or "lacking" or "poor":

其含义与:

^{pr2}$

由于"good" or "lacking" or "poor"始终为真,因此整个条件为真。在

而不是这样,你可以这样做:

while servqual not in ("great", "good", "lacking", "poor"):
    ...

相关问题 更多 >