【问题标题】:Calculating Average length of words using while loop使用while循环计算单词的平均长度
【发布时间】:2019-02-14 00:36:06
【问题描述】:

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

【问题讨论】:

  • 为什么需要启动 while 循环?
  • 只需设置input_word = 'dummy' 或其他东西来启动循环

标签: python loops


【解决方案1】:

首先,当input_word 进入while 循环时,您将覆盖它。

其次,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)

【讨论】:

  • 你是对的。在 while 循环的第二次迭代中,input_word 没有分配给空格,因此该迭代的字长为 0,但 num_words 仍将添加到总数中。因此,如果在循环结束时将 input_word 分配给 '',则在它第一次再次检查条件时不会发生下一次迭代。
【解决方案2】:

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

input_word = "foo"

并从num_words 中减去1 不计算空字符串:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-21
    • 1970-01-01
    • 2021-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多