2015-11-12 39 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 '')