Шуточная пасхалка в тг-боте-калькуляторе на языке пайтон
виталя белый
Ученик
(95),
на голосовании
1 месяц назад
Всем привет, я новичок в пайтоне, но уже написал код на тг бота-калькулятора. И я хочу сделать пасхалку, которая будет вылазить, когда человек решит написать число и поделить на ноль.
@bot.message_handler(commands=['start']) def start(message): print("Бот запущен") bot.reply_to(message, 'Здравствуйте! Это телеграм-бот-калькулятор. Введите выражение (например: 2 + 2) или уравнение (например: q 1 -3 2).')
def distr(a, b, c): D = b**2 - 4*a*c if D > 0: x1 = (-b + math.sqrt(D)) / (2*a) x2 = (-b - math.sqrt(D)) / (2*a) return f"Корни уравнения: x1 = {x1}, x2 = {x2}" elif D == 0: x = -b / (2*a) return f"Уравнение имеет один корень: x = {x}" else: return "Корней нет"
@bot.message_handler(content_types=['text']) def calculator(message): mes = message.text.strip().split()
# Обработка квадратного уравнения if mes[0].lower() == 'q': if len(mes) != 4: bot.reply_to(message, "Для решения квадратного уравнения введите: q a b c") return try: a = float(mes[1]) b = float(mes[2]) c = float(mes[3]) result = distr(a, b, c) bot.reply_to(message, result) except ValueError: bot.reply_to(message, "Пожалуйста, введите корректные числа.") except Exception as e: bot.reply_to(message, f"Произошла ошибка: {e}") return
# Обработка простых арифметических выражений if len(mes) != 3: bot.reply_to(message, "Пожалуйста, введите выражение в формате: число оператор число (например: 2 + 2)") return
num1, operator, num2 = mes
try: num1 = float(num1) num2 = float(num2)
if operator == '+': result = num1 + num2 elif operator == '-': result = num1 - num2 elif operator == '*': result = num1 * num2 elif operator == '/': if num2 == 0: #Код для пасхалки вместо ошибки, которая внизу в скобках (bot.reply_to(message, "Деление на ноль невозможно.")) return result = num1 / num2 elif operator == '**': result = num1 ** num2 else: bot.reply_to(message, "Неизвестный оператор. Используйте +, -, *, / или **.") return
Я так понимаю ты просто скопировал от куда то код? Просто если бы ты само его писал, то быстро бы додумался заменить "Деление на ноль невозможно" на то, что ты хочешь написать.
дело в том, что это изначально написал, а потом придумал шутку, в описании я даже поставил, где нужно код написать
даня я
Знаток
(282)
виталя белый,
#Код для пасхалки вместо ошибки, которая внизу в скобках
(bot.reply_to(message, "Деление на ноль невозможно."))
Вот здесь меняй
Помогите, пожалуйста:)
import telebot
import math
TOKEN = 'мой токен'
bot = telebot.TeleBot(TOKEN)
class User:
def __init__(self, id):
self.id = id
self.nickname = ""
self.email = ""
self.books = []
self.selected_lst = 0
self.status = 0
users_list = {}
@bot.message_handler(commands=['start'])
def start(message):
print("Бот запущен")
bot.reply_to(message, 'Здравствуйте! Это телеграм-бот-калькулятор. Введите выражение (например: 2 + 2) или уравнение (например: q 1 -3 2).')
def distr(a, b, c):
D = b**2 - 4*a*c
if D > 0:
x1 = (-b + math.sqrt(D)) / (2*a)
x2 = (-b - math.sqrt(D)) / (2*a)
return f"Корни уравнения: x1 = {x1}, x2 = {x2}"
elif D == 0:
x = -b / (2*a)
return f"Уравнение имеет один корень: x = {x}"
else:
return "Корней нет"
@bot.message_handler(content_types=['text'])
def calculator(message):
mes = message.text.strip().split()
# Обработка квадратного уравнения
if mes[0].lower() == 'q':
if len(mes) != 4:
bot.reply_to(message, "Для решения квадратного уравнения введите: q a b c")
return
try:
a = float(mes[1])
b = float(mes[2])
c = float(mes[3])
result = distr(a, b, c)
bot.reply_to(message, result)
except ValueError:
bot.reply_to(message, "Пожалуйста, введите корректные числа.")
except Exception as e:
bot.reply_to(message, f"Произошла ошибка: {e}")
return
# Обработка простых арифметических выражений
if len(mes) != 3:
bot.reply_to(message, "Пожалуйста, введите выражение в формате: число оператор число (например: 2 + 2)")
return
num1, operator, num2 = mes
try:
num1 = float(num1)
num2 = float(num2)
if operator == '+':
result = num1 + num2
elif operator == '-':
result = num1 - num2
elif operator == '*':
result = num1 * num2
elif operator == '/':
if num2 == 0:
#Код для пасхалки вместо ошибки, которая внизу в скобках
(bot.reply_to(message, "Деление на ноль невозможно."))
return
result = num1 / num2
elif operator == '**':
result = num1 ** num2
else:
bot.reply_to(message, "Неизвестный оператор. Используйте +, -, *, / или **.")
return
bot.reply_to(message, f"Результат: {result}")
except ValueError:
bot.reply_to(message, "Пожалуйста, введите корректные числа.")
except Exception as e:
bot.reply_to(message, f"Произошла ошибка: {e}")
bot.infinity_polling()