Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Почему код не робит питон

Artem Chernyshov Ученик (100), на голосовании 2 недели назад
 input:
from random import randint
import telebot
from telebot import types
bot = telebot.TeleBot('токен')

#Обработка команды /start
@bot.message_handler(commands=['start'])
def main(message):
client_id = message.chat.id
markup = types.ReplyKeyboardMarkup()
randomizer_button = types.KeyboardButton('Сгенерировать число!')
markup.row(randomizer_button)
bot.send_message(client_id, 'Привет!', reply_markup=markup)
bot.register_next_step_handler(message, first_num)
def first_num(message):
client_id = message.chat.id
bot.send_message(client_id, 'Хорошо. Введите первое число!')
bot.register_next_step_handler(message, second_num)
def second_num(message):
client_id = message.chat.id
first_number = int(message.text)
bot.send_message(client_id, 'Хорошо. Введите второе число!')
bot.register_next_step_handler(message, num_generator)
def num_generator(message):
client_id = message.chat.id
second_number = int(message.text)
bot.send_message(client_id, f'Сгенерированное число: {randint(first_number, second_number)}')
bot.polling(none_stop=True)

 output:
NameError: name 'first_number' is not defined. Did you mean: 'first_num'?
почему он не видит переменную first_number?
Голосование за лучший ответ
zendy izuku Ученик (227) 1 месяц назад
вон там ошибка
Artem ChernyshovУченик (100) 1 месяц назад
спасиб
Arie Benz Просветленный (36384) 1 месяц назад
Переменная first_number не видна в функции num_generator, потому что она определена в предыдущей функции second_num.
Чтобы исправить эту ошибку, нужно передать значение first_number в функцию num_generator в качестве аргумента.
Artem ChernyshovУченик (100) 1 месяц назад
Спасибо!
Тимур Бакиров Ученик (242) 1 месяц назад
Очень легко просто на до переходить с питон на с ++
Artem ChernyshovУченик (100) 1 месяц назад
поясни ка)
Тимур Бакиров Ученик (242) Artem Chernyshov, ну незнаю просто по моему с++ более функционально. И на пайтоне каждый может
Chudo_Chudnoe Мастер (2067) 1 месяц назад
Твоя переменная first_number объявлена в функции second_num, и она не доступна в функции num_generator. Каждая функция имеет свою область видимости, и переменные, объявленные внутри одной функции, не видны в другой функции.

Делай так:
 from random import randint  
import telebot
from telebot import types

bot = telebot.TeleBot('токен')

# Обработка команды /start
@bot.message_handler(commands=['start'])
def main(message):
client_id = message.chat.id
markup = types.ReplyKeyboardMarkup()
randomizer_button = types.KeyboardButton('Сгенерировать число!')
markup.row(randomizer_button)
bot.send_message(client_id, 'Привет!', reply_markup=markup)
bot.register_next_step_handler(message, first_num)

def first_num(message):
client_id = message.chat.id
bot.send_message(client_id, 'Хорошо. Введите первое число!')
bot.register_next_step_handler(message, second_num)

def second_num(message):
client_id = message.chat.id
first_number = int(message.text)
bot.send_message(client_id, 'Хорошо. Введите второе число!')
bot.register_next_step_handler(message, num_generator, first_number)

def num_generator(message, first_number):
client_id = message.chat.id
second_number = int(message.text)
bot.send_message(client_id, f'Сгенерированное число: {randint(first_number, second_number)}')

bot.polling(none_stop=True)
Похожие вопросы