【问题标题】:builtins.NameError: name 'answer' is not definedbuiltins.NameError:名称“答案”未定义
【发布时间】:2020-02-24 18:07:19
【问题描述】:

这是我遇到的问题。 我知道我必须在全球范围内定义答案,我做到了。 我不知道我哪里做错了。 这是我写的部分代码。 请帮帮我,我刚刚开始学习如何编写代码。

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()中定义了答案,我不知道我错了,有人可以帮助我吗?

【问题讨论】:

  • answermain() 的本地,不能在其他函数中访问。将其作为参数传递给函数。
  • 你能解释一下我该怎么做吗?

标签: python python-3.4 nameerror defined


【解决方案1】:

您需要将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) 

【讨论】:

    【解决方案2】:

    将此行更改为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))
    

    【讨论】:

      猜你喜欢
      • 2014-10-10
      • 1970-01-01
      • 2022-06-15
      • 2020-08-25
      • 1970-01-01
      • 2017-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多