获取最长字符串长度的函数
我想定义一个函数,用来获取一个变量中最长字符串的长度。为了能包含所有参数,我在字符串前面加了一个*
。
但是当我测试我的函数时,它只给出了第一个字符串的长度,而不是最长的那个。请问我哪里出错了?
>>> def longlen(*strings):
max=0
for s in strings:
if len(s)>max:
max=len(s)
return(max)
>>> longlen('kodak','polaroid','sony')
5
5 个回答
0
我觉得你应该调整一下返回语句的缩进。你的代码总是返回第一个长度,它不会去检查后面所有的字符串。
def longlen(*strings):
max=0
for s in strings:
if len(s)>max:
max=len(s)
return(max)
0
在你完成这个循环之后,返回你找到的最大值。
def longlen(*strings):
max=0
for s in strings:
if len(s)>max:
max=len(s)
return(max)
print longlen('kodak','polaroid','sony')
输出结果是:8
0
你的缩进不正确。可以查看一下关于Python缩进的文档。
def longlen(*strings):
maximum=0
for s in strings:
if len(s)>maximum:
maximum=len(s)
return(maximum)
3
当然,在实际应用中,你会使用:
max_len = max(map(len, strings))
0
这可能是一个编程任务,让你接触到函数之类的东西。不过在这里你不需要用到for循环,这个可以用更快的列表推导来完成。如果你对这个解决方案感兴趣,下面就是:
def longlen(*strings):
return max([len(s) for s in strings])