python,IF,переменная
import telebot;
import random;
import time;
from datetime import datetime
from dsb import *
from slovo import *
from intscontol import *
local_date = datetime.now()
lol = (local_date.strftime("%d, %b"))
print(lol)
global pzd
pzd = False
bot = telebot.TeleBot('1611352653:AAF0bktpaDOBpi6p43gk2kPujP9vfjs0iz8');
@bot.message_handler(content_types=['text'])
def get_text_messages(message):
if message.text in hi:
nu = random.randrange(4)
if nu == 0:
bot.send_message(message.from_user.id, "Привет")
elif nu == 1:
bot.send_message(message.from_user.id, "хай")
elif nu == 2:
bot.send_message(message.from_user.id, "Здравствуй")
elif nu == 3:
bot.send_message(message.from_user.id, "Здравствуйте")
#######
if message.text in howareyou:
nu = random.randrange(3)
if nu == 0:
bot.send_message(message.from_user.id, "хорошо")
elif nu == 1:
bot.send_message(message.from_user.id, "шикарно")
elif nu == 2:
bot.send_message(message.from_user.id, "найс")
elif nu == 3:
bot.send_message(message.from_user.id, "норм")
if message.text in dl_on:
self.pzd = True
bot.send_message(message.from_user.id, "Нижний свет включен")
print(self.pzd)
if message.text in dl_off:
self.pzd = False
bot.send_message(message.from_user.id, "Нижний свет выключен")
print(self.pzd)
if message.text == "скажи состояние нижнего света":
print(self.pzd)
if message.text in temp:
bot.send_message(message.from_user.id, "температура в Одессе сейчас %s" % W1ThermSensor().get_temperature())
bot.polling(none_stop=True, interval=0)
получаю UnboundLocalError: local variable 'pzd' referenced before assignment
Ответы (2 шт):
Автор решения: Sergey Derevianko
→ Ссылка
Ты делаешь глобальной не существующую переменную. Поменяй инициализацию и присвоение местами. Вот так не правильно:
global pzd
pzd = False
Вот так правильно:
pzd = False
global pzd
А вообще, лучше всего сделать так:
def get_text_messages(message):
pzd = False
То есть инициализировать твою переменную внутри функции функции. И работать с ней там, если конечно она тебе не нужна в других функциях. Создавать глобальные переменные не самый лучший вариант.
Автор решения: CrazyElf
→ Ссылка
global pzd нужно объявлять внутри функции, у функций свои переменные со своей областью видимости. Что там снаружи объявлено global для функции не указ.