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

时间:2019-02-14 00:36:06

标签: python loops

我正在尝试解决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循环的第一个输入不会增加字符的总长度。我该如何解决?

2 个答案:

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

答案 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