Python新手求助:如何找出三个字符串中的最长字符串?
解决三个字符串中最长字符串的问题
先看你代码里的几个核心问题:
- 开头直接把
srt1、str2、str3赋值成它们的长度,这会丢失原字符串内容,后续无法返回最长的原字符串。 - 函数
longest_word里的循环逻辑完全错误:enumerate(longest_word)是遍历函数对象本身,毫无意义;同时你使用了longest_word[i],但既没定义i,函数本身也不是可索引的序列。
下面给你两种实现方式,一种是用for循环手动遍历(贴合你想理解Python循环的需求),另一种是Python更简洁的内置函数写法。
方式一:用for循环手动查找
先把三个字符串放进列表,初始化变量保存当前最长字符串,再逐个遍历比较更新:
str1 = "eihd39d9" str2 = "xkn59438" str3 = "chdsye847" def longest_word(strs): # 初始化最长字符串为列表第一个元素 longest = strs[0] for s in strs: # 比较当前字符串与最长字符串的长度 if len(s) > len(longest): longest = s return longest # 调用函数,传入包含三个字符串的列表 result = longest_word([str1, str2, str3]) print(result) # 输出 chdsye847
这个逻辑和你熟悉的C++思路一致:先设定初始值,循环遍历每个元素,不断更新最大值(这里是最长字符串)。
方式二:用Python内置函数max()
Python内置的max()函数可以通过key参数指定比较规则,一行代码就能解决:
str1 = "eihd39d9" str2 = "xkn59438" str3 = "chdsye847" longest = max(str1, str2, str3, key=len) print(longest) # 输出 chdsye847
key=len表示按照字符串的长度进行比较,max()会直接返回长度最长的那个字符串。
内容的提问来源于stack exchange,提问作者Albert
相关产品推荐
相关产品推荐

