встроенные.NameError: имя «ответ» не определено

Это проблема, с которой я столкнулся. Я знаю, что должен определить ответ глобально, и я сделал это. Я не знаю, где я сделал неправильно. Вот часть кода, которую я написал. Пожалуйста, помогите мне с этим, я только начал учиться писать код.

def display_puzzle_string(puzzle):
    for letter in answer:
        puzzle.append('_')
    print('The answer so far is ' +' '.join(puzzle))

и в main() я поставил:

def main():
    list_of_words = ['apple', 'banana', 'watermelon', 'kiwi', 'pineapple', 'mango']
    answer = random.choice(list_of_words) 
    puzzle = []
    display_puzzle_string(puzzle) 

но выяснилось, что у меня ошибка в моей функции.

File "/home/user/COMPUT/wp4.py", line 25, in <module>
  display_puzzle_string(puzzle)
File "/home/user/COMPUT/wp4.py", line 11, in <module>
  for letter in answer:
builtins.NameError: name 'answer' is not defined

Я определил ответ в def main(), и я не знаю, насколько я неправ, может ли кто-нибудь мне помочь?


person Tina Lin    schedule 24.02.2020    source источник
comment
answer является локальным для main(), к нему нельзя получить доступ в других функциях. Передайте его как параметр функции.   -  person Barmar    schedule 24.02.2020
comment
Можете ли вы объяснить, как я могу это сделать?   -  person Tina Lin    schedule 24.02.2020


Ответы (2)


Вам нужно передать answer в качестве параметра функции, так как он является локальным для функции main().

def display_puzzle_string(answer, puzzle):
    for letter in answer:
        puzzle.append('_')
    print('The answer so far is ' +' '.join(puzzle))

def main():
    list_of_words = ['apple', 'banana', 'watermelon', 'kiwi', 'pineapple', 'mango']
    answer = random.choice(list_of_words) 
    puzzle = []
    display_puzzle_string(answer, puzzle) 
person Barmar    schedule 24.02.2020

Измените эту строку на display_puzzle_string(puzzle) на display_puzzle_string(puzzle,answer).

И измените определение функции на

def display_puzzle_string(puzzle,answer):
    for letter in answer:
        puzzle.append('_')
    print('The answer so far is ' +' '.join(puzzle))
person AzyCrw4282    schedule 24.02.2020