С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/34: Рейтинг темы: голосов - 34, средняя оценка - 4.94
0 / 0 / 0
Регистрация: 01.02.2019
Сообщений: 39

NameError: name 'XXX' is not defined

23.07.2019, 16:12. Показов 7091. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, пытался создать базу данных для своего TelegramBot, создал, все работало. После добавления нескольких переменных начала появляться эта ошибка. Помогите плз.

2019-07-23 15:54:40,156 (util.py:65 WorkerThread1) ERROR - TeleBot: "NameError occurred, args=("name 'age' is not defined",)
Traceback (most recent call last):
File "C:\Users\tihon\AppData\Local\Programs\P ython\Python37-32\lib\site-packages\telebot\util.py", line 59, in run
task(*args, **kwargs)
File "C:/Users/tihon/PycharmProjects/TelBotRESET/main.py", line 99, in get_age
while age == 0: #проверяем что возраст изменился
NameError: name 'age' is not defined
"
Traceback (most recent call last):
File "C:/Users/tihon/PycharmProjects/TelBotRESET/main.py", line 148, in <module>
bot.polling(none_stop=True, interval=0)
File "C:\Users\tihon\AppData\Local\Programs\P ython\Python37-32\lib\site-packages\telebot\__init__.py", line 389, in polling
self.__threaded_polling(none_stop, interval, timeout)
File "C:\Users\tihon\AppData\Local\Programs\P ython\Python37-32\lib\site-packages\telebot\__init__.py", line 413, in __threaded_polling
self.worker_pool.raise_exceptions()
File "C:\Users\tihon\AppData\Local\Programs\P ython\Python37-32\lib\site-packages\telebot\util.py", line 108, in raise_exceptions
six.reraise(self.exc_info[0], self.exc_info[1], self.exc_info[2])
File "C:\Users\tihon\AppData\Local\Programs\P ython\Python37-32\lib\site-packages\six.py", line 693, in reraise
raise value
File "C:\Users\tihon\AppData\Local\Programs\P ython\Python37-32\lib\site-packages\telebot\util.py", line 59, in run
task(*args, **kwargs)
File "C:/Users/tihon/PycharmProjects/TelBotRESET/main.py", line 99, in get_age
while age == 0: #проверяем что возраст изменился
NameError: name 'age' is not defined



Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
# 
 
import constants
#!/usr/bin/python
 
import sqlite3
import telebot
import constants
from telebot import types
 
#Подключение к базе
conn = sqlite3.connect('my.sqlite')
#Создание курсора
c = conn.cursor()
#Функция занесения пользователя в базу
def add_user(userid,username,usersurname,userage):
    c.execute("INSERT INTO users (id,name,surname,aage) VALUES ('%s','%s','%s','%s')"%(userid,username,usersurname,userage))
    conn.commit()
#Вводим данные
id = ''
name = ''
surname = ''
aage = ''
print('\n')
#Делаем запрос в базу
print("Список пользователей:\n")
 
c.execute('SELECT * FROM users')
row = c.fetchone()
#выводим список пользователей в цикле
while row is not None:
   print("id:"+str(row[0])+" Логин: "+row[1]+" | Пароль: "+row[2])
   row = c.fetchone()
 
 
 
 
 
API_TOKEN = constants.token
 
bot = telebot.TeleBot(API_TOKEN)
 
@bot.message_handler(commands=['commands'])
def send_welcome(message):
    bot.send_message(message.from_user.id, """
---- \n
     all commands \n
     - /help \n
     - /start \n
     - /reg \n
----
    """)
 
# Handle '/start' and '/help'
@bot.message_handler(commands=['help'])
def send_welcome(message):
    bot.reply_to(message, """\
    Hi, I'm healthy lifestyle bot. I help you to find any coaches & partners for your training""")
 
@bot.message_handler(commands=['start'])
def handle_start(message):
    user_markup = telebot.types.ReplyKeyboardMarkup(True)
    user_markup.row('Поиск пары')
    user_markup.row('Найти тренера', '', '')
    user_markup.row('Ближайшая открытая тренировка')
    bot.send_message(message.from_user.id, "Добро пожаловать..", reply_markup=user_markup)
 
@bot.message_handler(content_types=['text'])
def start(message):
    if message.text == '/reg':
        keyboard = types.InlineKeyboardMarkup();  # наша клавиатура
        key_yes = types.InlineKeyboardButton(text='Да', callback_data='yes1');  # кнопка «Да»
        keyboard.add(key_yes);  # добавляем кнопку в клавиатуру
        key_no = types.InlineKeyboardButton(text='Нет', callback_data='no1');
        keyboard.add(key_no);
        question = 'Хочешь изменить анкету?';
        bot.send_message(message.from_user.id, text=question, reply_markup=keyboard)
        bot.register_next_step_handler(message, get_name);
 
 
 
    else:
        bot.send_message(message.from_user.id, 'для посмотра комманд введите /commands');
 
def get_name(message): #получаем фамилию
    global name;
    name = message.text;
    bot.send_message(message.from_user.id, 'Какая у тебя фамилия?');
    bot.register_next_step_handler(message, get_surname);
 
def get_surname(message):
    global surname;
    surname = message.text;
    bot.send_message(message.from_user.id, 'Сколько тебе лет?');
    bot.register_next_step_handler(message, get_age);
 
def get_age(message):
    global age;
    while age == 0: #проверяем что возраст изменился
        try:
             age = int(message.text) #проверяем, что возраст введен корректно
        except Exception:
             bot.send_message(message.from_user.id, 'Цифрами, пожалуйста');
             break;
    id = message.from_user.id
    aage = age
    add_user(id, name, surname, aage)
    # закрываем соединение с базой
    c.close()
    conn.close()
    keyboard = types.InlineKeyboardMarkup();  # наша клавиатура
    key_yes = types.InlineKeyboardButton(text='Да', callback_data='yes');  # кнопка «Да»
    keyboard.add(key_yes);  # добавляем кнопку в клавиатуру
    key_no = types.InlineKeyboardButton(text='Нет', callback_data='no');
    keyboard.add(key_no);
    question = 'Тебе ' + str(age) + ' лет, тебя зовут ' + name + ' ' + surname + '?';
    bot.send_message(message.from_user.id, text=question, reply_markup=keyboard)
 
@bot.callback_query_handler(func=lambda call: True)
def callback_worker(call):
    if call.data == "yes": #call.data это callback_data, которую мы указали при объявлении кнопки
         #код сохранения данных, или их обработки
        bot.send_message(call.message.chat.id, 'Запомню : )');
        key = telebot.types.ReplyKeyboardMarkup(True, False)
        key.row('1', '2')
        key.row("6", "7",)
 
        key.row('Back')
        send = bot.send_message(call.message.chat.id, '...', reply_markup=key);
 
    elif call.data == "no":
 
        bot.send_message(call.message.chat.id, 'Мне пофиг, будешь ' + name + ' ' + surname);
    if call.data == "yes1":  # call.data это callback_data, которую мы указали при объявлении кнопки
        bot.send_message(call.from_user.id, 'Как вас зовут?');
 
 
 
    elif call.data == "no1":
 
        bot.send_message(call.message.chat.id, 'Хорошо ' + name + ' ' + surname);
 
 
bot.polling(none_stop=True, interval=0)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.07.2019, 16:12
Ответы с готовыми решениями:

NameError: name 'n' is not defined
Всем привет! В это коде постоянно вылазит ошибка &quot;NameError: name 'name' is not defined&quot; я не могу понять почему , объясните пожалуйста ...

NameError: name 'с' is not defined
what = input( &quot;Что делаем? (+,-): &quot; ) a = input(&quot;Введи первое число: &quot;) b = input(&quot;Введи второе число: &quot;) if what ==...

NameError: name 'i' is not defined. Did you mean: 'id'?
a = 0 string = input() if string.isalpha == True: a += i print(string_1) Traceback (most recent call last): File...

2
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
23.07.2019, 16:29
Лучший ответ Сообщение было отмечено gtihon9 как решение

Решение

Цитата Сообщение от gtihon9 Посмотреть сообщение
NameError: name 'age' is not defined
Что непонятно? У вас нет такой глобальной переменной.
1
 Аватар для GulgDev
132 / 118 / 29
Регистрация: 09.07.2019
Сообщений: 1,071
23.07.2019, 17:00
Лучший ответ Сообщение было отмечено gtihon9 как решение

Решение

У вас переменная названа aage, а не age.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.07.2019, 17:00
Помогаю со студенческими работами здесь

NameError: name 'a' is not defined
Как подправить, чтобы заработало?# -*- coding: utf-8 -*- а = (43, 56, 45.23, 'd') b = print (a.__sizeof__())C:\Python34\python.exe...

NameError: name '_' is not defined
Здравствуйте! Как известно, в Python есть буферная переменная _, которая каждый раз, как выполняется какая-то функция, возвращающая не...

NameError: name 'a' is not defined
ver='\nверсия 1' def funk(a, b): global ver print('весы', ver) a=int(input('первое число: ')) b=int(input('второе...

NameError: name 'self' is not defined
class AnonymousSurvey(): &quot;&quot;&quot;Get anonymous responses.&quot;&quot;&quot; def __init___(self, question): &quot;&quot;&quot;Saves question and ready...

NameError: name 'hello' is not defined
создаю простенький файлик: def hello(): print('Hello, world!') def calc_summ(a, b): return a + b пытаюсь подключить...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru