获取最长字符串长度的函数

1 投票
5 回答
2685 浏览
提问于 2025-04-18 17:22

我想定义一个函数,用来获取一个变量中最长字符串的长度。为了能包含所有参数,我在字符串前面加了一个*

但是当我测试我的函数时,它只给出了第一个字符串的长度,而不是最长的那个。请问我哪里出错了?

>>> 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])

撰写回答