Я только начинаю изучать Python. В качестве упражнения я написал этот небольшой скрипт:
Напишите программу, которая многократно читает цифры, пока пользователь не введет «готово». Как только введено «выполнено», распечатайте сумму, количество и среднее число. Если пользователь вводит что-то кроме числа, обнаружите его ошибку, используя try
и except
, распечатайте сообщение об ошибке и перейдите к следующему номеру.
Он делает то, что должен в общем случае, но: когда я немного поиграл с этим, я заметил одно странное поведение: так как он принимает несколько (int) чисел после приглашения, он не будет - и не должен - принимать символы. Пока все хорошо, но потом я попытался использовать float в качестве входных данных. Скрипт не примет это как допустимый ввод, но посчитает его и поместит усеченное число в итог.
Код:
total = float(0) # sum of items
count = int(0) # number of items
avrg = float(0) # average of items
input_in = True
while input_in:
try:
line = input('Enter a number: ')
if line == 'done':
print('total:', str(total),' count:', str(count),' average:', str(avrg))
break
print(line)
for itervar in line:
total = total + float(itervar)
count = count+1
avrg = total / count
except:
print('Invalid input')
Вывод:
Enter a number: 1.5
1.5
Invalid input
Enter a number: 5
5
Enter a number: 5
5
Enter a number: 5
5
Enter a number: done
total: 16.0 count: 4 average: 4.0
То, что я пробовал - и не сработало: назначьте строку переменных и / или itervar как float (). Я попробовал включенный отладчик, но я не в состоянии понять это. Я понятия не имею, как это может работать.