Мой код не всегда срабатывает на Enter при нажатии в консоли и приходиться нажимать 2 раза Enter, но тогда я получаю сразу 2 запроса. Как это можно исправить?

import requests
import time

assets = ['BTC', 'ETH', 'BNB', 'XRP', 'ADA', 'DOGE', 'SOL', 'DOT', 'MATIC', 'LTC']


class TradingBot:
    def __init__(self):
        self.balance = 100.0  # Увеличен начальный баланс для тестирования
        self.asset_balance = 0.0
        self.asset = None
        self.initial_price = None
        self.grid_funds = [10] * 10  # 10 частей по 10 долларов
        self.grid_positions = []
        self.X = None  # Процент изменения цены для покупки/продажи
        self.grid_buy_prices = []  # Уровни цен для покупки

    def select_asset(self):
        print("Выберите актив из списка:")
        for idx, asset in enumerate(assets):
            print(f"{idx + 1}. {asset}/USDT")
        try:
            choice = int(input("Введите номер актива: ")) - 1
        except ValueError:
            print("Некорректный ввод. Пожалуйста, введите число.")
            return self.select_asset()
        if 0 <= choice < len(assets):
            self.asset = assets[choice] + 'USDT'
            print(f"Вы выбрали: {self.asset}")
            self.initial_price = self.get_current_price()
            print(f"Текущая цена {self.asset}: {self.initial_price} USDT")
        else:
            print("Неверный выбор. Попробуйте снова.")
            self.select_asset()

    def get_current_price(self):
        try:
            url = f"https://api.binance.com/api/v3/ticker/price?symbol={self.asset}"
            response = requests.get(url)
            data = response.json()
            return float(data['price'])
        except Exception as e:
            print(f"Ошибка при получении цены: {e}")
            return self.initial_price  # В случае ошибки возвращаем последнюю известную цену

    def set_strategy_parameters(self):
        try:
            self.X = float(input("Введите процент изменения цены для покупок/продаж (X%): "))
        except ValueError:
            print("Некорректный ввод. Пожалуйста, введите число.")
            return self.set_strategy_parameters()

        # Инициализируем уровни цен для покупки
        self.grid_buy_prices = [
            self.initial_price * (1 - (i + 1) * self.X / 100) for i in range(len(self.grid_funds))
        ]
        print("Уровни цен для покупки:")
        for i, price in enumerate(self.grid_buy_prices):
            print(f"Уровень {i + 1}: {price:.2f} USDT")

    def start_trading(self):
        print("Начинаем торговлю по сеточной стратегии...")
        while True:
            current_price = self.get_current_price()
            print(f"\nТекущая цена {self.asset}: {current_price:.2f} USDT")

            # Проверяем условия покупки для каждого уровня
            for i in range(len(self.grid_funds)):
                if self.grid_funds[i] > 0:
                    target_buy_price = self.grid_buy_prices[i]
                    if current_price <= target_buy_price:
                        amount = self.grid_funds[i] / current_price
                        self.asset_balance += amount
                        self.balance -= self.grid_funds[i]
                        sell_price = current_price * (1 + self.X / 100)
                        self.grid_positions.append({
                            'amount': amount,
                            'buy_price': current_price,
                            'sell_price': sell_price,
                            'grid_index': i
                        })
                        print(f"Куплено {amount:.6f} {self.asset[:-4]} по цене {current_price:.2f} USDT")
                        self.grid_funds[i] = 0  # Обнуляем эту часть средств

            # Проверяем условия продажи для каждой позиции
            for position in self.grid_positions[:]:
                if current_price >= position['sell_price']:
                    sell_amount = position['amount']
                    sell_value = sell_amount * current_price
                    self.asset_balance -= sell_amount
                    self.balance += sell_value
                    self.grid_positions.remove(position)
                    print(f"Продано {sell_amount:.6f} {self.asset[:-4]} по цене {current_price:.2f} USDT")

                    # После продажи восстанавливаем средства для покупки на этом уровне
                    grid_idx = position['grid_index']
                    self.grid_funds[grid_idx] = 10  # Можно настроить сумму повторно

            self.print_account_status()

            user_input = input("Введите 'q' для выхода или Enter для продолжения: ").strip().lower()
            if user_input == 'q':
                break
            # Добавим небольшую задержку, чтобы избежать чрезмерных запросов
            time.sleep(1)

    def print_account_status(self):
        total_value = self.balance + self.asset_balance * self.get_current_price()
        print(f"\nСостояние счета:")
        print(f"Баланс USD: {self.balance:.2f} USDT")
        print(f"Баланс {self.asset[:-4]}: {self.asset_balance:.6f}")
        print(f"Общая стоимость портфеля: {total_value:.2f} USDT")


if __name__ == "__main__":
    bot = TradingBot()
    bot.select_asset()
    bot.set_strategy_parameters()
    bot.start_trading()