2017-02-04 2 views
0

Я только начал изучать ООП и борюсь с ним. Этот вопрос, вероятно, смотрит мне прямо в глаза.«Глобальное имя не определено» error

def Travel(): 
    choice = str() 
    choice = input("Where will you search?\nChoose F for Front or T for Trunk\n") 
    if choice == "F": 
     LocF() 
    elif choice == "T": 
     LocT(i) 

def LocF(): 
    print("Looking through the front of the car, you find a screwdriver.\nYou figure that might help a bit.") 
    inv = ("screwdriver") 
    return i 

def LocT(i): 
    if i[0] == "screwdriver": 
     print("You use your screwdriver to pop the inside of the trunk door lock off.") 
     time.sleep(0.5) 
     print("You make it to class with seconds to spare.") 
    else: 
     print("You can't get to the trunk yet.") 
     Travel() 
+1

Вы не определили i ... –

+0

в 'LocF()', вы создаете переменную 'inv', но пытаетесь вернуть несуществующую переменную' i'. Измените одно на другое. –

ответ

0

Предположим, вы сначала вызываете функцию Travel().

Если было вызвано Travel(), вы должны ввести строку со значением 'F' или 'T'.

Если ввод «F», будет называться LocF(), в LocF() вы вернули i, но вы не определили его.

Если вход «T», LocT() будет называться, и так как там нет i в Travel() сферы, интерпретатор будет искать i снаружи. И тоже нет i, поэтому ошибка понятна.

Есть несколько способов исправить ваш код, но поскольку я не знаю, что вы пытаетесь сделать, я не могу помочь дальше.

И ваша проблема связана с статическим и динамическим охватом, а не с ООП.

Смежные вопросы