2016-12-02 42 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

相關問題