我正在做一个Python课程,其中涉及完成许多在线问题,而且这个任务看起来真的很简单(获取字符串列表并将其转换为小写字母)。但是,无论尝试什么,我的代码都会失败。我已经尝试过列表理解和循环,但无济于事-它只是说测试失败。 这是下面的代码:
def lowercase(strings):
"""takes a list strings and replaces string with lowercase words"""
strings = [x.lower() for x in strings]
return strings
strings = ['LOWER', 'CASE', 'SENTENCE']
lowercase(strings)
print(strings)
我提供的零件是:
def lowercase(strings):
"""takes a list strings and replaces string with lowercase words"""
strings = ['LOWER', 'CASE', 'SENTENCE']
lowercase(strings)
print(strings)
因此,我只允许在将“字符串”更改为小写的函数内编写代码(我可以在doc字符串下编写代码,但不能修改其他任何内容,例如删除测试代码的三行) 。因为他们的测试声明了字符串并在我的代码下调用了该函数,所以它似乎只会覆盖我编写的任何内容!我觉得我疯了,因为这是一个初学者的问题,我无法通过测试。我做错了什么?谢谢!
答案 0 :(得分:7)
您只需要进行一点更改:使用切片分配在适当的位置修改列表,而不是创建新列表。然后,您不需要返回它(实际上,Python约定不这样做)。
def lowercase(strings):
"""takes a list of strings and replaces each with lowercase version"""
strings[:] = (x.lower() for x in strings)
答案 1 :(得分:3)
您的问题是您拥有的函数在其中制作了strings
的副本,并返回了该副本。而是要在适当的位置修改列表。
这是一种实现方法:
def lowercase(strings):
"""takes a list strings and replaces string with lowercase words"""
for i, x in enumerate(strings):
strings[i] = x.lower()
strings = ['LOWER', 'CASE', 'SENTENCE']
lowercase(strings)
print(strings)
#['lower', 'case', 'sentence']
代替列表理解(创建新列表),遍历strings
的索引并修改每个元素。
答案 2 :(得分:0)
使用相同的列表理解代码尝试此
strings = ['LOWER', 'CASE', 'SENTENCE']
strings = lowercase(strings)
print(strings)