помощь в корректироке кода Python
Представь, что мы пишем программу для банковских карточек. Человек может совершать покупки, пока у него на карте хватает на это денег.
В начале программы вводим количество денег, а потом вводим расходы, пока они не превышают баланс на карте.
Когда превысили, мы должны получить, сколько успели сделать покупок и сколько осталось денег на карте.
Это мой код, вроде все правильно, но в конце цикла не суммирует последнюю покупку.
a = int(input("Введите сумму пополнения:"))
b = int(input("Введите сумму покупки:"))
n = 0
while (a-b)>0:
a-=b
n += 1
b=int(input("Введите сумму покупки:"))
print(a,n)
вот результат
Введите сумму пополнения:100
Введите сумму покупки:20
Введите сумму покупки:20
Введите сумму покупки:20
Введите сумму покупки:20
Введите сумму покупки:20
20 4
Ответы (5 шт):
Потому что ты изначально запрашиваешь оплату покупки и в цикле сразу же делаешь это повторно? то есть сам цикл у тебя отрабатывает 4 раза изначально, по пробуй использовать пока А больше 0 что бы твоя программа работала пока у тебя на счету вообще есть деньги и сделай условие выхода с цикла.
Пример:
a = int(input("Введите сумму пополнения:"))
n,i = 0,0
while i<1:
b = int(input("Введите сумму покупки:"))
a-=b
n += 1
temp=input("Продолжить покупки?")
if(temp=="" or temp=="Y"or temp=="y"or temp=="Да"or temp=="да"):
i=0
else:
i=1
print(a,n)
Попробуйте так:
a = int(input("Введите сумму пополнения: "))
n = 0
while True:
b = int(input("Введите сумму покупки: "))
if a-b > 0:
a -= b
n += 1
else:
break
print(f'\nСовершено покупок: {n} \nБаланс на карте: {a}')
Я так понимаю вы хотите что бы в конце выводился остаток баланса и количество покупок:
Balance = int(input('Введите сумму пополнения: '))
CountOfPurchases = 0
while True:
Price = int(input('Введите сумму покупки: '))
Balance -= Price
CountOfPurchases += 1
if (Balance - Price) < 0:
break
print(Balance, CountOfPurchases)
Если цена превышает баланс - программа прекращает свою работу
Еще вариант:
from itertools import count
a = int(input("Введите сумму пополнения:"))
for n in count():
if a <= 0:
print("Вы не можете совершать покупки. До свидания!")
break
while True:
b = int(input("Введите сумму покупки:"))
if b > 0: break
print("Неправильный ввод суммы покупки, повторите еще раз!")
if a - b < 0:
print("Сумма покупки превышает баланс. До свидания!!!")
break
a -= b
print("Баланс:", a, "Количество покупок:", n)
while (a-b)>0:
Проблема в том, что в конце у вас остаётся на счету 20, покупка тоже на 20, а проверяете вы, что 20-20>0, т.е. 0>0 это условие не выполняется. Нужно проверять >= как-раз на случай, если последняя покупка будет ровно на всю оставшуюся сумму:
while (a-b)>=0:
Фактически, вы вашим текущим условием проверяете не условие "хватит ли у меня денег на эту покупку?", а "останется ли у меня хоть что-нибудь после очередной покупки?" Чтобы такое условие выполнилось, у вас должна остаться хотя бы одна копейка.
