我试图解决一个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循环的输入并没有增加字符的总长度。我该怎么解决这个问题?
首先,一旦进入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)
您正在丢弃循环第一步中的第一个值。将启动值更改为类似的值
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