我的if语句一直为空列表返回'None'

And*_*ang 2 python if-statement function list

我是Python编码的初学者,我一直在练习CodeWars练习.

这个练习基本上要你在Facebook上重新创建"喜欢"的显示功能,即它如何显示你在帖子上的数字等.

这是我的代码:

def likes(names):
    for name in names:
        if len(names) == 0:
           return 'no one likes this'
        elif len(names) == 1:
           return '%s likes this' % (name)
        elif len(names) == 2:
           return '%s and %s like this' % (names[0], names[1])
        elif len(names) == 3:
           return '%s, %s and %s like this' % (names[0], names[1], names[2])
        elif len(names) >= 4:
           return '%s, %s and %s others like this' % (names[0], names[1], len(names) - 2)

print likes([])
print likes(['Peter'])
print likes(['Alex', 'Jacob', 'Mark', 'Max'])
Run Code Online (Sandbox Code Playgroud)

打印出:

None
Peter likes this
Alex, Jacob and 2 others like this
Run Code Online (Sandbox Code Playgroud)

我的主要问题是,当参数:[]为空时,我的第一个'if'语句不生成字符串'没有人喜欢这个'.有没有解决这个问题的方法?

Dee*_*ace 7

如果names是空列表,for则根本不会执行循环,这将导致函数返回None.您应该更改函数的结构(提示:您可能甚至不需要循环,至少不需要显式循环).有一个循环然后return在第一次迭代时没有意义.