Как суммировать числа, введенные пользователем с помощью Python, и вывести общую сумму? - PullRequest
0 голосов
/ 16 июня 2020

Моя задача:

Написать программу, которая многократно считывает числа, пока пользователь не введет «готово». После ввода «готово» распечатайте общее, количество и среднее значение чисел. Если пользователь вводит что-либо, кроме числа, обнаружьте их ошибку с помощью try and except, распечатайте сообщение об ошибке и перейдите к следующему числу.

Моя идея заключалась в том, чтобы добавить числа, введенные пользователем, в список и после этого l oop через список, чтобы просуммировать число и вычислить среднее значение, используя эту сумму, разделенную на длину списка. Это работает? Однако в мой список не добавляются целые числа, только строки. Кроме того, в список было добавлено слово «готово».

мой код:

x=[ ]
while True:
    line = input('enter a number: ')
    x.append(line)
    if line == 'done':
        break

мой желаемый результат:

Enter a number: 4

Enter a number: 5

Enter a number: bad data

Enter a number: 7

Enter a number: done

16 3 5.333333333333333

Ответы [ 2 ]

2 голосов
/ 16 июня 2020

Моя идея заключалась в том, чтобы добавить числа, введенные пользователем, в список, а после этого l oop по списку, чтобы суммировать число и вычислить среднее значение, используя эту сумму, разделенную на длину списка. Это работает?

Да, это звучит как идеальное решение.

Однако в мой список не добавляются целые числа, только строки.

Преобразуйте ввод в int перед добавлением:

x.append(int(line))

Это не удастся, если line не может быть преобразовано в int, поэтому вы, вероятно, на самом деле хотите :

try:
    x.append(int(line))
except ValueError:
    pass

Кроме того, в список было добавлено слово «готово».

Проверить строку 'done' перед вы добавляете его.

if line == 'done':
    break
try:
    x.append(int(line))
except ValueError:
    pass

Наконец, вы можете использовать sum и len для выполнения своих расчетов.

1 голос
/ 16 июня 2020

Вот что вы можете сделать, предполагая, что пользователь может вводить только целые числа:

x=[]
while True:
    try:
        line = input('enter a number: ')
        if line == 'done':
            break
        x.append(int(line))
    except:
        pass
print(sum(x),len(x),sum(x)/len(x))

Если пользователь должен иметь возможность вводить числа с плавающей запятой:

x=[]
while True:
    try:
        line = input('enter a number: ')
        if line == 'done':
            break
        x.append(float(line))
    except:
        pass
print(sum(x),len(x),sum(x)/len(x))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...