Dec-02-2022, 11:23 PM
The first time everything works, but when I try to run the code on the second round, it gives an error after entering the variable "average". What could be the problem? Thanks)
import math import telebot from telebot import types token='***' bot=telebot.TeleBot(token) texts = list() # после запуска бота получаем меню из двух кнопок @bot.message_handler(commands=['start']) def start(message): markup = types.ReplyKeyboardMarkup(resize_keyboard=True) item1=types.KeyboardButton('Кнопка1') item2=types.KeyboardButton('Кнопка2') markup.add(item1, item2) bot.send_message(message.chat.id,'<b>Выберите одну из кнопок.</b>', parse_mode='html', reply_markup=markup) # первый тип расчётов @bot.message_handler(func = lambda message: message.text == 'Кнопка1') def first(message): msg = bot.send_message(message.chat.id, '<b>Введите первое число.</b>', parse_mode='html') bot.register_next_step_handler(msg, second) def second(message): global n n = int(message.text) msg = bot.send_message(message.chat.id, '<b>Введите второе число.</b>', parse_mode='html') bot.register_next_step_handler(msg, average) def average(message): global average average = float(message.text) if average >= 5: bot.send_message(message.chat.id, f'<b>Введите коректные данные.</b>', parse_mode='html') x = 4.0 while x < 5.01: if average >= x: pass else: averageNew = x - 0.049 # минимальное значение average1 = average + 0.049 n5 = (averageNew - average1) * n / (5 - averageNew) if math.ceil(n5) < 1: n5 = 1 else: n5 = math.ceil(n5) # максимальное значение average2 = average - 0.049 nN = (averageNew - average2) * n / (5 - averageNew) if math.ceil(nN) < 1: pass else: nN = math.ceil(nN) # запись расчётов в список if nN == n5: texts.append(f"{round(x, 2)} — {nN} шт.") else: texts.append(f"{round(x, 2)} — {n5}-{nN} шт.") x += 0.1 bot.send_message(message.chat.id, f'<b>Список расчётов:</b>', parse_mode='html') bot.send_message(message.chat.id, "\n".join(texts), parse_mode='html') # второй тип расчётов @bot.message_handler(func = lambda message: message.text == 'Кнопка2') def sorry(message): bot.send_message(message.chat.id, '<b>Данный тип калькулятора в разработке. Выберите другой вариант.</b>', parse_mode='html') bot.polling(none_stop=True)