"""
МОДУЛЬ 3
Программа "Личный счет"
Описание работы программы:
Пользователь запускает программу у него на счету 0
Программа предлагает следующие варианты действий
1. пополнить счет
2. покупка
3. история покупок
4. выход

1. пополнение счета
при выборе этого пункта пользователю предлагается ввести сумму на сколько пополнить счет
после того как пользователь вводит сумму она добавляется к счету
снова попадаем в основное меню

2. покупка
при выборе этого пункта пользователю предлагается ввести сумму покупки
если она больше количества денег на счете, то сообщаем что денег не хватает и переходим в основное меню
если денег достаточно предлагаем пользователю ввести название покупки, например (еда)
снимаем деньги со счета
сохраняем покупку в историю
выходим в основное меню

3. история покупок
выводим историю покупок пользователя (название и сумму)
возвращаемся в основное меню

4. выход
выход из программы

При выполнении задания можно пользоваться любыми средствами

Для реализации основного меню можно использовать пример ниже или написать свой
"""


# функция добавления денег на счет
def add_money():
    add_sum = float(input('На сколько пополним счет?\n'))
    return add_sum


# функция покупки. Проверяем остаток на счете и добавляем покупку в словарь
# на вход принимаются остаток на счете и переменная для сохранения истории покупок
def check_purchase(account_sum, purchases={}):
    sum_purchase = float(input('Сколько потратим?\n'))
    if account_sum < sum_purchase:
        print('Недостаточно денег на счете!')
    else:
        # уменьшаем сумму на счете, сохраняем покупку в словарь
        account_sum -= sum_purchase
        purchase_name = input('Введите категорию покупки:\n')
        # добавляем покупку в словарь в виде покупка-сумма
        purchases[purchase_name] = sum_purchase

    return purchases


# вывод истории покупок - пары ключ-значение из словаря
def purchase_history(purchases):
    print('Покупок:')
    for key, value in purchases.items():
        print(f'{key} на сумму {value}')


# баланс счета на старте программы
account_sum = 0
while True:
    print('1. пополнение счета')
    print('2. покупка')
    print('3. история покупок')
    print('4. выход')

    choice = input('Выберите пункт меню: ')
    if choice == '1':
        add_summ = add_money()
        account_sum += add_summ # пополняем общую сумму нашего счета в границах программы
    elif choice == '2':
        purchases = check_purchase(account_sum)
    elif choice == '3':
        purchase_history(purchases)
    elif choice == '4':
        break
    else:
        print('Неверный пункт меню')
