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

Как исправить ошибку «IndexError: list index out of range» для чат-бота телеграмм на библиотеке aiogram?

dict_data_user = await state.get_data()
    list_data_user = []
    for k, v in dict_data_user.items():
        list_data_user.append(v)
        user_id = message.from_user.id
        id_product = list_data_user[0]
        full_name = list_data_user[1]
        index_adress = list_data_user[2]
        number_phon = list_data_user[3]
        user_db.add_user(id_product=id_product, user_id=user_id, full_name=full_name,
                             index_adress=index_adress, number_phon=number_phon)
        await state.clear()


выдает ошибку в строке "index_adress = list_data_user" либо же в следующей. list index out of range. пробовал менять числа, значения в список дописываются пользователем внутри бота. полный код скину ответом
  • Вопрос задан
  • 52 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
febday
@febday
Во-первых: нужно правильно указывать код в вопросе, через специальную кнопку
Во-вторых: Зачем, а главное н....? Исходя из названия переменной dict_data_user можно сказать, что вы прекрасно понимаете, что функция await state.get_data() отдаёт словарь. Для чего тогда создавать список, после чего его заполнять при помощи цикла (даже не генератора)?

Почему нельзя было написать так?
dict_data_user = await state.get_data()
user_db.add_user(id_product=dict_data_user["id_product"], user_id=dict_data_user["user_id"], full_name=dict_data_user ["full_name"], index_adress=dict_data_user["index_adress"], number_phon=dict_data_user["number_phon"])
await state.clear()


Либо вы не понимаете логику словаря, либо это какая-то шутка

В-третьих: Ошибка вам говорит о том, что у вас нет 2 элемента списка (следовательно в списке всего 2 элемента - 0 и 1). Проверьте что вы вообще туда добавили

Код, который я привёл лишь исправление вашего, а не правильный ответ
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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