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

Телеграм-бот калькулятор систем счсисления выводит пустой ответ. Как исправить?

Бот калькулятор систем счисления выводит пустой ответ. Не могу понять почему. Помогите, пожалуйста, исправить код

import telebot
from telebot import types
  
bot = telebot.TeleBot('###')
  
  
@bot.message_handler(commands=['start'])
def start(message):
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    item1 = types.KeyboardButton('Калькулятор')
    markup.add(item1)
    bot.send_message(message.chat.id, 'Привет!', reply_markup=markup)
  
  
@bot.message_handler(content_types=['text'])
def send_text(message):
    if message.chat.type == 'private':
        if message.text == 'Калькулятор':
            bot.send_message(message.chat.id, 'Введите число')
            bot.register_next_step_handler(message, get_number)
  
  
def get_number(message):
    try:
        a = message.text
        bot.send_message(message.chat.id, 'Введите основание системы счисления числа')
        bot.register_next_step_handler(message, lalala, a)
    except ValueError:
        bot.send_message(message.chat.id, 'Пожалуйста, нажмите на кнопку "Калькулятор", чтобы заново начать операцию')
  
  
def lalala(message, a):
    try:
        b = int(message.text)
        bot.send_message(message.chat.id, 'Введите основание системы счисления, в которое Вы хотите перевести число')
        bot.register_next_step_handler(message, convert_number, a, b)
    except ValueError:
        bot.send_message(message.chat.id, 'Пожалуйста, нажмите на кнопку "Калькулятор", чтобы заново начать операцию')
  
  
def convert_number(message, a, b):
  
  
    try:
        s = ''
        n = int(message.text)
        if b != 10:
  
            power = 1
            ans = 0
            for i in a[::-1]:
                if i < 'A':
                    ans += int(i) * power
                else:
                    ans += (ord(i) - ord('A') + 10) * power
                power *= b
  
        else:
            s = ''
            ans = int(a)
            al = 'ABCDEF'
  
            while ans > 0:
                s = ''
                c = ans % n
                if c < 10:
                    s = str(c) + s
                else:
                    s = al[c - 10] + s
                ans //= n
  
  
        bot.send_message(message.chat.id, f'Ответ: {s}')
    except ValueError:
        bot.send_message(message.chat.id, 'Пожалуйста, нажмите на кнопку "Калькулятор", чтобы заново начать операцию')
  
  
bot.polling(none_stop=True, interval=0)
  • Вопрос задан
  • 75 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ваш ответ на вопрос

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

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