pohgen
@pohgen

Почему в обычном питоне работает а с библиотекой TelegramBotApi нет?

Мне нужно, чтобы пользователь ввёл 4 раза числа, которые добавляются в массив. Но в обычном питоне сделать input в цикле не составляет проблем, а вот при работе с ботом возникает вопрос: "Как это реализовать?". Ведь там принимаются значения от пользователя методом bot.register_next_step_handler(msg, cykl)
А это принуждает использовать новую функцию def, хотя я хочу реализовать всё в одной. Думал сделать по прототипу рекурсии, но всё равно не работает подскажите как реализовать?
Вот код с ботом:
def wyznacznik(message, w_list):
    i = 0
    while i < 4:
        def cykl(message):
            w = message.text
            w_list.append(w)
            msg = bot.send_message(message.chat.id, 'Введи вызначник (w{i})', reply_markup=markup)
            bot.register_next_step_handler(msg, cykl)
        i += 1
    schet(message, w_list, x1_list, x2_list, x3_list)

def schet(message, w_list, x1_list, x2_list, x3_list):
    car_a = x1_list[0]*w_list[0]+x1_list[1]*w_list[1]+x1_list[2]*w_list[2]+x1_list[3]*w_list[3]
    car_b = x2_list[0]*w_list[0]+x2_list[1]*w_list[1]+x2_list[2]*w_list[2]+x2_list[3]*w_list[3]
    car_c = x3_list[0]*w_list[0]+x3_list[1]*w_list[1]+x3_list[2]*w_list[2]+x3_list[3]*w_list[3]
    msg = bot.send_message(message.chat.id, "Машина А = "+str(car_a)+"\n"+"Машина B = "+str(car_b)+"\n"+"Машина С = "+str(car_c)+"\n", reply_markup=markup)

w_list = []
x1_list = [0.5, 1, 0, 0.5]
x2_list = [1, 0.5, 0.5, 0]
x3_list = [0, 0, 1, 1]

bot.polling(none_stop=True)

А вот код на обычном питоне:
def wyznacznik(w_list):
    i = 0
    while i < 4:
        w = float(input('Введи вызначник (w{i})'))
        w_list.append(w)
        i += 1
    schet(w_list, x1_list, x2_list, x3_list)

def schet(w_list, x1_list, x2_list, x3_list):
    car_a = x1_list[0]*w_list[0]+x1_list[1]*w_list[1]+x1_list[2]*w_list[2]+x1_list[3]*w_list[3]
    car_b = x2_list[0]*w_list[0]+x2_list[1]*w_list[1]+x2_list[2]*w_list[2]+x2_list[3]*w_list[3]
    car_c = x3_list[0]*w_list[0]+x3_list[1]*w_list[1]+x3_list[2]*w_list[2]+x3_list[3]*w_list[3]
    print("Машина А = "+str(car_a)+"\n"+"Машина B = "+str(car_b)+"\n"+"Машина С = "+str(car_c)+"\n")

w_list = []
x1_list = [0.5, 1, 0, 0.5]
x2_list = [1, 0.5, 0.5, 0]
x3_list = [0, 0, 1, 1]
wyznacznik(w_list)

Как такое же сделать с ботом?
  • Вопрос задан
  • 129 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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