Как сделать ситсему бана вывода денег на 3 месяца при пополнении баланса?

Для реализации системы бана вывода денег на 3 месяца при пополнении баланса в Python, вам потребуется использовать некоторые структуры данных и логику.

Одним из способов реализации этой системы является использование словаря для хранения информации о каждом клиенте банка. Ключом словаря будет являться уникальный идентификатор клиента, а значением будет список, содержащий информацию о его балансе и дате последнего пополнения.

Для начала, создайте пустой словарь, который будет использоваться для хранения данных о клиентах:

clients = {}

Затем, напишите функцию, которая будет обрабатывать пополнение баланса клиента и проверять, требуется ли применить систему бана в соответствии с заданным условием (3 месяца без пополнения). Для проверки даты можно использовать модуль datetime.

from datetime import datetime, timedelta

def topup_balance(client_id, amount):
    # проверяем, существует ли клиент
    if client_id in clients:
        # получаем дату последнего пополнения
        last_topup_date = clients[client_id][1]
        
        # проверяем, прошло ли 3 месяца 
        if last_topup_date + timedelta(days=90) < datetime.now():
            # обновляем баланс и дату последнего пополнения
            clients[client_id][0] += amount
            clients[client_id][1] = datetime.now()
            print("Пополнение баланса успешно произведено.")
        else:
            print("Вывод денег заблокирован на 3 месяца.")
    else:
        print("Клиент не найден.")

Наконец, напишите небольшую программу-демонстрацию, которая позволит вам протестировать вашу реализацию:

# добавление клиента в словарь
clients["001"] = [0, datetime.now()]

# тестирование пополнения
topup_balance("001", 1000)  # Пополнение баланса успешно произведено.
topup_balance("001", 500)   # Вывод денег заблокирован на 3 месяца.

В этом примере, мы добавляем клиента с уникальным идентификатором "001" и инициализируем его баланс нулем, а также сохраняем дату последнего пополнения на текущий момент.

Затем мы вызываем функцию topup_balance для пополнения баланса клиента на 1000 и 500 единиц. В первом случае, пополнение происходит успешно, так как прошло менее 3 месяцев с момента последнего пополнения. Во втором случае, пополнение блокируется, так как прошло более 3 месяцев.

Вы можете доработать этот код, добавив другие функции, такие как withdraw (снятие денег с баланса) или get_balance (получение текущего баланса клиента). Также, вы можете добавить обработку исключений и дополнительную валидацию данных в соответствии с требованиями вашего проекта.