sum = 0
amount = 0
num = float(input("Введите цены товаров(0 для выхода): "))
while num != 0:
if (num == 0):
print("Error")
exit(0)
num = float(input("Введите цены товаров(0 для выхода): "))
sum += num
print("Сумма покупки: ",sum)
Asked
Active
Viewed 38 times
2
Сергей
- 4,935
- 6
- 12
- 29
2 Answers
4
В вашем коде множество проблем.
- Условие
if (num == 0)никогда не выполняется, т.к. циклwhileпри условииnum != 0остановится сразу же, какnumполучит значение0. - Даже если бы условие
if (num == 0)срабатывало, то вы бы получалиSystemExitблагодаряexit(0)вместо итоговой суммы, а возможность узнать конечную стоимость всей покупки отсутствует вовсе. - У вас идет конкретное дублирование кода.
- Вы проинициализировали неиспользуемую переменную
amount. - Вы заменяете "системную" функцию
sumна переменную.
Я предлагаю улучшить ваш код до:
amount = 0
while price := float(input('Введите цену товара (0 для выхода): ')):
amount += price
if not amount:
raise SystemExit('Error')
print(f'Сумма покупки: {amount}')
Что касается вашего вопроса, то вы просто не прибавляете к переменной sum значение первой num.
re1von
- 346
- 1
- 8
1
Оставаясь в логике вашей программы надо просто присвоить это значение переменной summ, да проверку на ошибку вынести за цикл.
Переменную sum переименовал - это имя функции в Python, нехорошо её переопределять.
num = float(input("Введите цены товаров(0 для выхода): "))
if not num:
print ("Error")
exit (0)
summ = num
while num:
num = float(input("Введите цены товаров(0 для выхода): "))
summ += num
print("Сумма покупки: ",summ)
Сергей
- 4,935
- 6
- 12
- 29
-
Если ответ был полезным, его можно отметить плюсом (нажать треугольник вверх слева от вопроса). Если ответ полностью решил задачу - принять ответ (нажать на галку под треугольниками слева). Можно и то, и другое, если ещё и понравилось:-) – Сергей Jun 24 '22 at 14:26
num = None, например :) Первыйinputпросто не нужен вообще. И не называйте свою переменнуюsum. – CrazyElf Jun 24 '22 at 14:07