Получение "NameError: имя 'номер_пути' не определено" - PullRequest
0 голосов
/ 28 мая 2018

Вот код, с которым у меня возникают проблемы.Я использую Python 3.6.

def room():
    room_path=["1","2"]
    user_choice = ""

print ("If you decide to ditch Todd and go to the campfire alone, enter 1")
print ("If you decide to drag Todd with you to the campfire, enter 2")
user_choice = input("your option number")

if user_choice == room_path [1]:
    print ("yes")
elif user_choice == room_path [2]:
    print ("no")

Когда я запускаю код и ввожу число, я получаю сообщение об ошибке:

    if user_choice == room_path [1]:
NameError: name 'room_path' is not defined

Ответы [ 3 ]

0 голосов
/ 28 мая 2018

Немного проблема, я думаю,

room_path=["1","2"]

определяет str для room_path списка

, но когда вы вводите str, это: 1 или 2должно соответствовать

if user_choice == room_path [0]:

с [0] - это первый столбец списка room_path.

0 голосов
/ 28 мая 2018

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

def room():
    room_path=["1","2"]
    user_choice = ""

    print ("If you decide to ditch Todd and go to the campfire alone, enter 1")  
    print ("If you decide to drag Todd with you to the campfire, enter 2")
    user_choice = input("your option number")

    if user_choice == room_path [1]:
        print ("yes")
    elif user_choice == room_path [2]:
        print ("no")
0 голосов
/ 28 мая 2018

Ошибка возникает из-за того, что имя room_path объявлено в области действия функции room и поэтому не может быть вызвано извне этой функции.

Вот хорошая ссылка, объясняющая область действия переменныхв Python:

http://python -textbok.readthedocs.io / en / 1.0 / Variables_and_Scope.html

Чтобы устранить проблему, вы можете объявить room_path вневаша room функция, которую вы, вероятно, также захотите сделать с user_choice и полностью удалить функцию room.

Ваш код будет выглядеть примерно так:

room_path=["1","2"]
user_choice = ""

print ("If you decide to ditch Todd and go to the campfire alone, enter 1")
print ("If you decide to drag Todd with you to the campfire, enter 2")
user_choice = input("your option number")

if user_choice == room_path [1]:
    print ("yes")
elif user_choice == room_path [2]:
    print ("no")
...