2014-02-05 21 views
0

完整的問題是「寫一個函數find_longest_word()需要一個單詞列表和 返回最長的單詞和長度的最長的一個,你還應該寫一個測試函數 ,它將要求用戶列出單詞並打印最長的單詞及其長度。「編寫一個函數,需要一個單詞列表並返回最長的單詞和最長的一個的長度

我寫了這段代碼,它的工作原理。我只需要弄清楚我可以如何在這段代碼中添加一個函數,以便在問題中告訴我。

def main(): 
    text = input("Please input a list of words to evaluate: ") 

    longest = 0 

    for words in text.split(): 
     if len(words) > longest: 
      longest = len(words) 
      longest_word = words 

    print("The longest word is", longest_word, "with length", len(longest_word)) 

main() 

回答

5

只需移動的邏輯,變成了功能,這樣

def find_longest_word(text): 
    for words in text.split(): 
     if len(words) > longest: 
      longest = len(words) 
      longest_word = words 
    return longest_word, len(longest_word) 

def main(): 
    input_string = input("Please input a list of words to evaluate: ") 
    longest_word = find_longest_word(input_string) 
    print("The longest word is", longest_word, "with length", len(longest_word)) 

的實際問題,你想解決就能解決這樣

def find_longest_word(text): 
    longest_word = max(text.split(), key = len) 
    return longest_word, len(longest_word) 

注:而不是在find_longest_word函數中打印結果,我們正在返回longest_word,以便函數只做它的假設d要做。現在,顧名思義,它只是找到最長的單詞。

+3

你應該將打印回主 – mhlester

+0

@mhlester沒有他不應該(這是更通用的這種方式 - 它可以從代碼中的其他地方使用/調用)。 +1 – alfasin

+0

提示說寫一個測試函數*請求*和*打印*結果。 'find_longest_word'需要*返回*最長的單詞及其長度 – mhlester

0

你不需要longest_word = words,但沒有你的答案,這是不可能回答這個練習....,所以謝謝!

def main(): 
    text = input("Please input a List of words to evaluate: ") 

    longest = 0 

    for words in text.split(): 
      if len(words) > longest: 
        longest = len(words) 
    print ("The longest word is", words, "with lenght", longest) 


main() 
1

這個練習用短編解碼器....

def main(): 
    a = sorted(input("Please input a list of words to evaluate: ").split(), key=len) [-1] 
    print ("You longe word ", str(a), " have this", str(len(a)), "lenghts") 

main() 
+0

試試你的解決方案字符串:''vfsdafs xx sssssssssss ddddd''它能正常工作嗎? –

+0

不,但用簡寫的話,是 – iratxe

+0

,爲什麼先來ddddd和第二個sssssssssss? – iratxe

-1
def find_longest_word(words_list): 
    word_len = [] 
    for n in words_list: 
     word_len.append((len(n), n)) 
    word_len.sort() 
    return word_len[-1][1] 

print(find_longest_word(["hasta ", "lavista", "baby"])) 
+4

沒有任何解釋只是代碼不是很好的答案。 – rene

相關問題