Игра подсчитывание монет, что можно улучшить?
Создайте игру, которая просит пользователя ввести необходимое количество монет, чтобы получился ровно один рубль. Программа должна предложить пользователю ввести количество монет достоинством и 5, 10, 50 копеек. Если итоговое значение введенных монет равно одному рублю, то программа должна поздравить пользователя с выигрышем. В противном случае программа должна вывести сообщение, говорящее о том, была ли введенная сумма больше или меньше одного рубля. Подумайте о варианте игры, где вместо рубля используется доллар и разменные монеты: пенс, пятицентовик, десятицентовик и четвертак.
Написал вот такой вот код, все работает, но мне интересно какие есть варианты по его улучшению.
coin_5 = int(input("Введите коины по 5 копеек: "))
coin_10 = int(input("Введите коины по 10 копеек: "))
coin_50 = int(input("Введите коины по 50 копеек: "))
ruble = (coin_5 * 0.05) + (coin_10 * 0.10) + (coin_50 * 0.50)
print("У вас получилось: ", + ruble)
if ruble == 1:
print("Поздравляем, вы выиграли")
elif ruble > 1:
print("Сумма слишком большая")
elif ruble < 1:
print("Сумма слишком мала.")
Ответы (1 шт):
первое что приходит на ум... и можно попробовать улучшить это:
- добавить некоторые проверки входных данных (в виде функции, которая будет ожидать ввода корректных данных), чтобы исключить возможные ошибки
- добавить константы
- использовать форматированный вывод результата для вывода вещественных чисел, с заданным кол. знаков после запятой...
Пример:
COIN_5_VALUE = 0.05
COIN_10_VALUE = 0.10
COIN_50_VALUE = 0.50
def get_valid_input(prompt):
while True:
try:
value = int(input(prompt))
if value >= 0:
return value
print("Введите положительное число.")
except ValueError:
print("Введите целое число.")
coin_5 = get_valid_input("Введите коины по 5 копеек: ")
coin_10 = get_valid_input("Введите коины по 10 копеек: ")
coin_50 = get_valid_input("Введите коины по 50 копеек: ")
ruble = (coin_5 * COIN_5_VALUE) + (coin_10 * COIN_10_VALUE) + (coin_50 * COIN_50_VALUE)
print("У вас получилось: {:.2f} рублей".format(ruble))
if ruble == 1:
print("Поздравляем, вы выиграли")
elif ruble > 1:
print("Сумма слишком большая")
else:
print("Сумма слишком мала.")