2015-11-12 36 views
2

我有任務最長的字符串來編寫程序在用戶輸入8個字,之後程序打印最長的單詞inputed和計數字的長度。我在找到最長的輸入字符串時遇到了問題。這是我的代碼:發現在for循環

counter = 0 
for i in range(8): 
    x = str(input('Enter a word: ')) 
    counter = len(x) 
if counter == max(counter): 
    print('The longest word is: ', counter) 

哪個當然不起作用。

+0

,因爲我是新來這個網站,我不知道如何正確地包含的代碼,所以我只是複製粘貼的它,和,好了,你看怎麼樣橫空出世 – CSmurf

+0

爲什麼每次都通過'counter'?如果它比以前更長,你只想保留它? –

+2

爲什麼不保持這個詞,而不是它的長度是多少?然後最後你知道這個詞是什麼,而不僅僅是它的長度。 –

回答

-2

請保留長度在列表中,並找到該列表中的最大值。

+0

:-D這裏同你的GitHub的鏈接 – orip

-3
counter="" 
for i in range(8): 
    x=str(input('Enter a word: ')) 
    if len(counter) < len(x): 
     counter = x 

print('The longest word is: ',x) 
+0

的代碼是錯誤的。 –

+0

能否請您詳細闡述它伍德先生。 –

+3

它會給出最短的單詞。 –

1

max可以採取其被施加到每個元件的參數key

words = [raw_input('Enter a word: ') for _ in xrange(8)] 
max_word = max(words, key=len) 
0

這應該做 - 此排序使用「len個」操作符,以獲得每個字符串的長度列表,[ - ]選擇最後一個(最長)。

words = [] 
for i in range(8): 
    words.append(raw_input('Enter a word: ')) 
longestWord = sorted(words, key=len)[-1] 
print 'The longest word is %s (%s character%s)' % (longestWord, len(longestWord), len(longestWord) != 1 and 's' or '') 

你要知道它是在它存儲所有輸入數組中,直到循環結束有點低效。也許更好的方式是這樣的:

longestWord = '' 
for i in range(8): 
    word = raw_input('Enter a word: ') 
    if len(word) > len(longestWord): 
     longestWord = word 
print 'The longest word is %s (%s character%s)' % (longestWord, len(longestWord), len(longestWord) != 1 and 's' or '')