使用while循环计算单词的平均长度

问题描述 投票:0回答:2

我试图解决一个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循环的输入并没有增加字符的总长度。我该怎么解决这个问题?

python loops
2个回答
1
投票

首先,一旦进入input_word循环,你就会覆盖while

其次,即使按Enter键,num_words也会加1。因此,当你说单词的数量是正确的,它实际上不计算第一个input_word,而是从第二个input_wordpress 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)

0
投票

您正在丢弃循环第一步中的第一个值。将启动值更改为类似的值

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
© www.soinside.com 2019 - 2024. All rights reserved.