2016-12-02 40 views
-2

我需要编写一个代码,其中一个函数接受一个列表,然后从该列表返回最长的字符串。查找列表中最长的字符串

到目前为止,我有:

def longestword(alist):  
    a = 0  
    answer = '' 
    for i in alist:   
     x = i  
    if x > a:   
     a = x   
     answer = x  
    elif i == a:   
     if i not in alist:    
      answer = answer + ' ' + i  
    return answer 

我的例子是longestword([11.22,"hello",20000,"Thanksgiving!",True]) 它应该返回'Thanksgiving!'但我的函数总是返回True

+0

请给我们一个描述性的标题。否则,在打开它之前,你已经对大多数用户产生了不利影响。 –

+0

大家第一次问我这个问题,我很抱歉!我是这个网站的全新品牌! – ANON

+0

这个清单的事情是它不是同质的;如果你用价值来定义长度,那么20000将是“最长的”;如果你正在尝试基于字符数进行操作,那么每个元素必须是一个字符串。 – Makoto

回答

2

对于初学者,它始终将x分配到列表中最后一个值,在您的示例中为True

for i in alist:   
    x = i 

你应该尽量不要在循环外部访问循环值计算,因为,那是你环绕在事情的最后一个值,所以True

elif i == a: 

的关键在于解决问题是挑选出哪些值是字符串(using isinstance())和跟踪长度最长的人(使用len()功能)

def longeststring(lst): 
    longest = "" 
    for x in lst: 
    if isinstance(x, str) and len(x) > len(longest): 
     longest = x 
    return longest 

请注意等长字符串。我不知道你的任务的要求。

+0

非常感谢您的帮助! – ANON

相关问题