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)
