在for循环中查找最长的字符串

时间:2015-11-12 12:27:33

标签: python loops for-loop

我的任务是编写一个程序,用户输入8个单词,之后程序打印出最长的单词并计算单词的长度。我找到最长的输入字符串时遇到问题。这是我的代码:

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)

当然不起作用。

4 个答案:

答案 0 :(得分:1)

max可以使用适用于每个元素的参数key

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

答案 1 :(得分:0)

这应该这样做 - 这会使用'len'运算符对列表进行排序以获取每个字符串的长度,而[-1]只选择最后一个(最长的)字符串。

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 '')

答案 2 :(得分:-2)

考虑将长度保留在列表中并找到该列表中的最大值。

答案 3 :(得分:-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)