Переменная не определена ошибка, даже если она есть? - PullRequest
0 голосов
/ 14 сентября 2018

Я создаю бот discord.py и пытаюсь реализовать команду, которая сообщит вам, сколько времени осталось до окончания периода. Код работает сам по себе, но если я пытаюсь внедрить его в бот, я получаю эту ошибку:

NameError: имя 'timee' не определено

(переменная называется timee, поскольку позже я также использую функцию time.sleep ())

Это код, с которым возникла проблема:

def setTime():
    global timee

    print(timee)

    if timee > 59 and timee < 100:
        timee -= 100
        timee += 60
    elif timee > 159 and timee < 200:
        timee -= 100
        timee += 60
    elif timee > 259 and timee < 300:
        timee -= 100
        timee += 60

У меня есть print(timee), чтобы проверить, думает ли он, определен он или нет, чего он не делает.

Это мой код, который вызывает функцию setTime (и должен также устанавливать время)

if currentTime < start:
    timee = start - currentTime

    print(timee)

    setTime()
    doThing()

    await client.send_message(message.channel, content = "School hasn't started yet! It starts in %s:%s" % (hours, minutes))
    print("%s got the time left." % message.author)

Edit: переменная 'timee' объявляется вне оператора if и функции.

Редактировать 2: я попробовал то, что кто-то прокомментировал (комментарий удален), который делает def setTime(timee): вместо

def setTime():
    global timee

И это работает. Я не знаю, если это неэффективно или что, но это работает. ТАКЖЕ, точно такой же код работает, если его нет в боте.

1 Ответ

0 голосов
/ 14 сентября 2018

Выполнение def setTime(timee): (в отличие от def setTime(): и просто попытка использовать глобальную переменную), а затем вызов 'timee' изнутри функции, подобной этой, кажется, все исправляет.

Если есть какой-то более эффективный или лучший способ сделать это, тогда скажите, но сейчас я, вероятно, буду придерживаться этого, так как это то, что я нашел работать.

...