我正在尝试解决python教科书问题:本章是循环讨论,因此我很确定它希望我使用它,而不是其他任何高级方法。
编写一个带有循环的程序,该循环反复要求用户输入单词。用户不应输入任何内容(按Enter键而不输入任何内容)以指示循环结束。循环结束后,程序应显示输入单词的平均长度,四舍五入到最接近的整数。
我的代码:
total = 0
num_words = 0
input_word = input('Please enter a word or press enter to quit: ')
while input_word != '':
input_word = input('Please enter a word or press enter to quit: ')
length_word = len(input_word)
total += length_word
num_words += 1
avg = total/num_words
print('Average length of word is:',avg)
如果我输入两个单词,单词的数量正确地反映为2,但是单词中的字符总数仅在第二个输入中计数。我猜想启动while循环的第一个输入不会增加字符的总长度。我该如何解决?
答案 0 :(得分:1)
首先,一旦input_word
进入while
循环,就将其覆盖。
第二,即使您按enter ,num_words
也被加1。因此,当您说的单词数正确时,实际上不是计算第一个input_word
,而是第二个input_word
到press enter to quit
。
进行如下更改以使其起作用:
total = 0
num_words = 0
input_word = input('Please enter a word or press space to quit: ')
while input_word != '':
length_word = len(input_word)
total += length_word
num_words += 1
input_word = input('Please enter a word or press enter to quit: ')
avg = total/num_words
print('Average length of word is:',avg)
答案 1 :(得分:0)
您将在循环的第一步中放弃第一个值。将 priming 值更改为
input_word = "foo"
并从1
中减去num_words
,以不计算空字符串:
avg = total / (num_words - 1)
示例输出:
Please enter a word or press enter to quit: abc
Please enter a word or press enter to quit: de
Please enter a word or press enter to quit:
Average length of word is: 2.5