【问题标题】:My if statement keeps returning 'None' for empty list我的 if 语句不断为空列表返回“无”
【发布时间】:2017-01-23 14:38:09
【问题描述】:

我是 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'])

打印出来:

None
Peter likes this
Alex, Jacob and 2 others like this

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

【问题讨论】:

  • 它正在返回None,因为所有不返回任何内容的函数都显式返回None
  • 只需删除带有for 的行就可以了
  • 非常感谢大家!

标签: python list function if-statement


【解决方案1】:

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

【讨论】:

  • 非常感谢!
  • 说“for 循环根本不会被执行”是否完全正确?例如,如果你在这个循环上放了一个else子句,子句后面的语句就会被执行
【解决方案2】:

您所做的 for 循环对于列表的每个元素都会发生一次,但您的列表中没有元素,因此不会发生循环,并且返回值为“None”

def likes(names):
    #for name in names:  #LOOK HERE: you definetly not need this loop
    if len(names) == 0:
       return 'no one likes this'
    elif len(names) == 1:
       return '%s likes this' % (names[0])
    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)

【讨论】:

  • 第 6 行:return '%s likes this' % (names[0])。否则返回错误。编辑太小,无法在您的 anwser 上进行
猜你喜欢
  • 2020-07-30
  • 2016-02-12
  • 1970-01-01
  • 2022-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-13
  • 1970-01-01
相关资源
最近更新 更多