我的任务是编写一个程序,用户输入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)
当然不起作用。
答案 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)