@AlEX9111

Как при создании телеграмм бота сложить несколько переменных?

Пытаюсь создать одного бота, для расчета нескольких параметров и столкнулся с проблемой, что введенные числовые переменные не складываются в одно число, а как бы пишутся друг с другом вместе (например хочу сложить 1+1, а получается 11)
Сразу скажу, что я в этом всем профан, специальность моя в другом, а это нам задали как проект...

Вот код:
import telebot

bot = telebot.TeleBot('Token')

@bot.message_handler(commands=['start', 'привет', 'hello'])
def main(message):
    bot.send_message(message.chat.id, f'Привет, {message.from_user.first_name}, я бот ...! Я умею ....
@bot.message_handler()
def info(message):
    if message.text.lower() == 'начать':
        bot.send_message(message.from_user.id, 'Введите количество C:')
        bot.register_next_step_handler(message, get_C)
def get_C(message):
    global C
    C = message.text
    bot.send_message(message.chat.id, 'Введите количество H:')
    bot.register_next_step_handler(message, get_H)
def get_H(message):
    global H
    H = message.text
    bot.send_message(message.chat.id, 'Введите количество O:')
    bot.register_next_step_handler(message, get_O)
def get_O(messege):
    global O
    O = messege.text
    global M
    M = C*12+H+O*16
    bot.send_message(messege.chat.id, M)
bot.polling(non_stop=True)
  • Вопрос задан
  • 116 просмотров
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Это потому что текст сообщения пользователя - строка. Для строк, "1" + "1" = "11", потому что сложение строк - это конкатенация.
Преобразуй строки в числа. Для целых это просто
s = "11"
x = int(s)  # x = 11

Для дробных чисел сложнее. Конечно, можно сделать по аналогии:
s = "1.1"
x = float(s)  # x = 1.1

Но тут требуется десятичная точка, т.е. "1,1" не прокатит. Отчасти это можно компенсировать заменой, например,
s = "1,1"
x = float(s.replace(",", "."))  # x = 1.1

Коряво, но сработает.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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