builtins.NameError: имя 'answer' не определено - PullRequest
0 голосов
/ 24 февраля 2020

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

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(), и я не знаю, насколько я не прав, может кто-нибудь мне помочь?

Ответы [ 2 ]

1 голос
/ 24 февраля 2020

Вам необходимо передать 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) 
0 голосов
/ 24 февраля 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))
...