带两个字符串的If语句

2024-04-18 19:05:21 发布

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

我刚开始学习Python,想练习if语句,因为我在玩文本冒险游戏。我只是想让这样的事情发生。例如,如果要键入“look at the floor”(或仅仅是“look floor”),其中word1将是“look”和“floor”。你知道吗

也许有一个简单的答案,我尝试了一些不同的方法,但似乎不能使它工作。谢谢你的帮助!你知道吗

def test():
    answer = raw_input().lower()
    if ('word1' and 'word2') in answer:
        print "Both words were in the answer."
    else:
        print "Both words were NOT in the answer"

test()

Tags: theanswerintest文本if语句words
3条回答

您可以使用^{}来实现这一点:

def test():
    answer = raw_input().lower()
    if all(word in answer for word in ('word1', 'word2')):
        print "Both words were in the answer."
    else:
        print "Both words were NOT in the answer"

test()

这将遍历您指定的每个单词并检查它是否在answer中。当所有已执行的检查都是这种情况时,内置函数all()将返回True,否则返回False。换句话说,只有当所有检查都是True时才是True。你知道吗

您需要对每个单词进行in成员资格测试:

if ('word1' in answer) and ('word2' in answer):

当然,如果你有很多单词,这会很快变得乏味。在这种情况下,可以使用^{}generator expression

if all(word in answer for word in ('word1', 'word2', ...)):

上面将测试元组('word1', 'word2', ...)中的每个单词是否可以在answer中找到。你知道吗

下面是一个更详尽的解释:

评估顺序!

您必须记住,虽然某些惯用结构在英语(或任何其他语言)中是有意义的,但它们在编程语言中可能没有意义,即使它是有效的语法。你知道吗

例如,让我们考虑一下您的示例代码的测试表达式:

('word1' and 'word2') in answer

应用求值顺序规则时,首先求值括号(('word1' and 'word2'))中的子表达式。由于and运算符,此子表达式的结果是右操作数,因为左操作数的计算结果是True。在初始表达式中重新插入这个值得到:'word2' in answer。因此,只要答案中能找到第二个单词,测试就会一直有效。你知道吗

编辑:更正布尔求值。你知道吗

相关问题 更多 >