Задать вопрос
@vomir

Код почему то запускаеться 5 раз хотя такого не должно быть в чем может быть проблема?

Вот сам код я решил проблему с помощью break но интересно почему он все таки прокручивает for 5 раз
@dp.message_handler(commands=['inventory'])
async def inventory(message):
    user_id=message.chat.id
    quer=(f"""
        SELECT *
        FROM inventory
        WHERE id=%(id)s """%{"id":user_id})
    c.execute(quer)
    choice=c.fetchall()
    i=0
    for items in choice:
        if i==0:
            size = len(items)
            size=size-2
            inventory4 = await calculation(items,size)
            i+=1
            if inventory4 == 0 or inventory4 == "":
                print('10')
                mess=('Ты смотришь в свой инвентарь'+'\n'+'Твой инвентарь пуст')
                await bot.send_message(message.chat.id, mess, parse_mode='html')
            else:
                print('11')
                mess=('Ты смотришь в свой инвентарь'+'\n'+str(inventory4))
                await bot.send_message(message.chat.id, mess, parse_mode='html')
            #break
        else:
            print('0')


вот что показивает в терменале
10
0
0
0
0

ошибки никакой нету
  • Вопрос задан
  • 92 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 2
trapwalker
@trapwalker Куратор тега Python
Программист, энтузиаст
А что вас удивляет? Все работает как написано.
SQL-запрос вернул 5 записей, вы перебираете их циклом, в котором при первом проходе выполняется некий код с инвентарем, а на остальных четырех проходах i=1 и срабатывает негативная ветка, где печатается символ нуля.
Судя по тому, как вы неправильно пользуетесь шаблонной строкой и какой вопрос задаете, вы далеки от программирования. Надо подучиться питну и основам алгоритмизации.
А еще так подставлять параметры в запрос опасно, нужно передавать их отдельно в execute.
Ответ написан
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Потому что из базы вернулось 5 строк.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы