我想定义一个函数,它将获取变量中最长字符串的长度。
我在下面使用*
字符串之前执行以下操作,以便它包含所有参数。
但是当我测试我的函数时,它只给出第一个字符串的长度(而不是给我最长的)。我做错了什么?
>>> def longlen(*strings):
max=0
for s in strings:
if len(s)>max:
max=len(s)
return(max)
>>> longlen('kodak','polaroid','sony')
5
答案 0 :(得分:3)
当然,在您使用的真实世界用例中:
max_len = max(map(len, strings))
答案 1 :(得分:0)
我认为你应该改变return语句的缩进。您的代码将始终返回第一个长度,它将永远不会为所有后续字符串进行迭代。
def longlen(*strings):
max=0
for s in strings:
if len(s)>max:
max=len(s)
return(max)
答案 2 :(得分:0)
在完成for循环后返回最大值
def longlen(*strings):
max=0
for s in strings:
if len(s)>max:
max=len(s)
return(max)
print longlen('kodak','polaroid','sony')
输出:8
答案 3 :(得分:0)
这可能是一项编程任务,让您与函数和东西保持联系。但是你在这里不需要for循环,这可以用更快的列表理解来完成。如果您对该解决方案感兴趣,请点击此处:
def longlen(*strings):
return max([len(s) for s in strings])
答案 4 :(得分:0)
您的缩进不正确。请参阅documentation on python indentation。
def longlen(*strings):
maximum=0
for s in strings:
if len(s)>maximum:
maximum=len(s)
return(maximum)