Вычисление средней длины слов с использованием цикла while - PullRequest
0 голосов
/ 14 февраля 2019

Я пытаюсь решить проблему с учебником по питону: глава - циклы, поэтому я уверен, что она хочет, чтобы я использовал ее, а не какие-либо другие продвинутые методы.

Напишите программу с циклом, который постоянно запрашиваетпользователь вводит слово.Пользователь не должен ничего вводить (нажмите 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 голосов
/ 14 февраля 2019

Прежде всего, вы перезаписываете input_word, как только оно входит в цикл while.

Во-вторых, 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)
0 голосов
/ 14 февраля 2019

Вы отбрасываете первое значение на первом шаге вашего цикла.Измените значение 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...