首页 > 解决方案 > for循环只循环一次,所以就像没有使用循环一样

问题描述

所以首先我是python的新手,我遇到了一个简单的问题,但仍然很复杂。基本上,我尝试循环列表中的所有内容,并让它们通过条件检查是否存在。

这是为了检查句子是否是问候语。

greets = ["Hi","Hello", "Hey"]

#Thinking
def isGreet(mes):  #Checks if it's a greeting
    words = mes.split()
    for greet in greets:
        print(greet)
        if (words[0]==greet):
            return 1;
        else:
            return 0;

当用户输入内容时,代码应该检查它是否是问候语,如果是,则返回 true,如果不是,则返回 false。很简单,不是吗?但是当我输入一些东西时,代码只有在使用 hi 时才返回 true,但是当我输入 let's say hello 时,它会返回 false。我添加了一个打印函数来查看循环是否有效,但它只打印 Hi,所以我得出结论,for 循环一定有问题。非常感谢任何帮助。

标签: pythonpython-3.xfor-loopconditional-statements

解决方案


for循环只循环一次,所以就像没有使用循环一样

是的,因为无论第一次迭代如何,您都会从函数中返回。因此,如果测试的第一个单词仅是列表中的第一个,则您的测试有效。否则返回 0。

不需要循环,使用in

greets = {"Hi","Hello", "Hey"}  # set should be faster, only if a lot of words, though

def isGreet(mes):
    return mes.split()[0] in greets

如评论中所述,mes.split()[0]有点浪费,因为它不断拆分我们不需要的其他单词,因此用mes.split(maxsplit=1)[0]或替换mes.split(None,1)[0]为 python 2。


推荐阅读