1. Покупка в долларах (в коде есть строки из следующих тем: "while", "строки").
Условие:
Пользователь хочет совершить покупку за 100 долларов. А у пользователя счёт в рублях, поэтому программа спрашивает, сколько у него рублей на счету.
Если денег хватает, то программа выводит на экран остаток на счету после покупки.
Если не хватает, то пишет, сколько рублей не хватает для покупки.
Код:
print("Стоимость Вашей покупки составляет 100 долларов США\n")
# ввод данных, которые являются константой
BUY_USD = 100
# ввод переменных, которые нуждаются в проверке и необходимой модификации
score_rub = input("Введите остаток денежных средств на Вашем счету, в руб. (формат xxx.xx): ") # просто заводим данные, создавая переменную, для запуска условий и циклов
score_rub_mod = score_rub # создадим новую переменную и проверять будем её
if "." and "," in score_rub_mod: # если в введённых данных и точка и запятая значит пользователь ошибся при вводе, оставим данные без обработки и передадим в цикл
pass
if "." in score_rub_mod and "," not in score_rub_mod: # если в введённых данных есть точка и нет запятой, то удалим точку (это необходимо сделать для того, чтобы воспользоваться функцией isdigit)
score_rub_mod = score_rub_mod.replace(".", "")
if "," in score_rub_mod and "." not in score_rub_mod: # если в введённых данных есть запятая и нет точки, то удалим запятую (это необходимо сделать для того, чтобы воспользоваться функцией isdigit)
score_rub_mod = score_rub_mod.replace(",", "")
while score_rub_mod.isdigit() == False: # запускаем цикл, пока модифицированная переменная не будет иметь возможность превращаться из строки в цифру
score_rub = input("Вы ввели данные не в том формате. Сколько денежных средств на Вашем счету в руб. (формат xxx.xx): ") # первоначальный ввод данных оказался неудачным и уже в цикле мы вводим данные заново
score_rub_mod = score_rub
if "." and "," in score_rub_mod: # если в введённых данных и точка и запятая значит пользователь ошибся при вводе, оставим данные без обработки и передадим в цикл
pass
if "." in score_rub_mod and "," not in score_rub_mod: # если в введённых данных есть точка и нет запятой, то удалим точку (это необходимо сделать для того, чтобы воспользоваться функцией isdigit)
score_rub_mod = score_rub_mod.replace(".", "")
if "," in score_rub_mod and "." not in score_rub_mod: # если в введённых данных есть запятая и нет точки, то удалим запятую (это необходимо сделать для того, чтобы воспользоваться функцией isdigit)
score_rub_mod = score_rub_mod.replace(",", "")
if score_rub_mod.isdigit(): # здесь условие окончания цикла
pass
if "," in score_rub: # после окончательной проверки, нужно наконец-то избавиться от запятой, если она была
score_rub = score_rub.replace(",",".")
score_rub = float(score_rub) # теперь окончательно приводим данные к нужному формату "float"
# ввод переменных, которые нуждаются в проверке и необходимой модификации #2
kurs_usd = input("Введите курс доллара (формат xxx.xx): ") # просто заводим данные, создавая переменную, для запуска условий и циклов
kurs_usd_mod = kurs_usd # создадим новую переменную и проверять будем её
if "." and "," in kurs_usd_mod: # если в введённых данных и точка и запятая значит пользователь ошибся при вводе, оставим данные без обработки и передадим в цикл
pass
if "." in kurs_usd_mod and "," not in kurs_usd_mod: # если в введённых данных есть точка и нет запятой, то удалим точку (это необходимо сделать для того, чтобы воспользоваться функцией isdigit)
kurs_usd_mod = kurs_usd_mod.replace(".", "")
if "," in kurs_usd_mod and "." not in kurs_usd_mod: # если в введённых данных есть запятая и нет точки, то удалим запятую (это необходимо сделать для того, чтобы воспользоваться функцией isdigit)
kurs_usd_mod = kurs_usd_mod.replace(",", "")
while kurs_usd_mod.isdigit() == False: # запускаем цикл, пока модифицированная переменная не будет иметь возможность превращаться из строки в цифру
kurs_usd = input("Вы ввели данные не в том формате. Введите курс доллара (формат xxx.xx): ") # первоначальный ввод данных оказался неудачным и уже в цикле мы вводим данные заново
kurs_usd_mod = kurs_usd
if "." and "," in kurs_usd_mod: # если в введённых данных и точка и запятая значит пользователь ошибся при вводе, оставим данные без обработки и передадим в цикл
pass
if "." in kurs_usd_mod and "," not in kurs_usd_mod: # если в введённых данных есть точка и нет запятой, то удалим точку (это необходимо сделать для того, чтобы воспользоваться функцией isdigit)
kurs_usd_mod = kurs_usd_mod.replace(".", "")
if "," in kurs_usd_mod and "." not in kurs_usd_mod: # если в введённых данных есть запятая и нет точки, то удалим запятую (это необходимо сделать для того, чтобы воспользоваться функцией isdigit)
kurs_usd_mod = kurs_usd_mod.replace(",", "")
if kurs_usd_mod.isdigit(): # здесь условие окончания цикла
pass
if "," in kurs_usd: # после окончательной проверки, нужно наконец-то избавиться от запятой, если она была
kurs_usd = kurs_usd.replace(",",".")
kurs_usd = float(kurs_usd) # теперь окончательно приводим данные к нужному формату "float"
# переведём цену покупки в рубли
buy_rub = BUY_USD * kurs_usd
# Проверим, хватает ли денег на счёте? Если не хватает закончим программу сразу. Если хватает, то зададим вопрос о желании произвести покупку. Запустим в цикле вопрос о желании сделать покупку с автоматическим списанием денег со счёта.
if score_rub < buy_rub:
print("На счёте недостаточно средств для покупки.")
print("Не хватает", (buy_rub - score_rub), "руб.")
elif score_rub >= buy_rub:
answer = str()
while answer != "нет" and score_rub >= buy_rub:
answer = input("Хотите ли Вы произвести покупку? (да/нет) ")
if answer == "нет":
print("До свидания.")
elif answer == "да":
score_rub -= buy_rub
print("Остаток денежных средств на счету равен", score_rub, "руб.")
if answer == "да" and score_rub < buy_rub:
print("Для следующей покупки не хватает", buy_rub - score_rub, "руб.")