首页 > 解决方案 > 有没有办法添加到全局变量?

问题描述

我正在尝试在 Python 中创建刽子手。我有两个变量我遇到了麻烦;“揭示”和“max_guess”。我想要做的是让玩家输入一个字母,将猜测的字母添加到列表中,并有一个功能检查计算机选择的单词的任何字母是否在猜测的字母列表中。

然后该函数有一个 for let in 单词,其中嵌套了一个 if 语句。if 语句的条件是如果 let 是猜测的字母,它将将该字母添加到字符串 'revealed' 中。否则,它将 max_guess 增加 1,并在显示的字符串中添加下划线。一旦 max_guess 达到六,刽子手游戏将结束。

对于这两个变量,错误消息说 max_guess 和显示的局部变量在赋值之前被引用,即使我在函数之外定义了这两个变量并且我只是添加到它。

   guessed_letters = []
   revealed = ""
def is_in_word(guess):
  """Checks if guessed letter is in chosen word"""
  for let in word:
    if let in guessed_letters: 
      revealed += "let"
    else: 
      revealed += '_'
      max_guess += 1
      print(max_guess)
  return revealed

我希望代码显示玩家猜到的单词中的字母,并对每个错误的猜测 +1。

标签: python

解决方案


看看这里:

var = 0

def function():
    var = 1
    print("inside the function", var)

function()
print("outside the function", var)

输出:

inside the function 1
outside the function 0

我的猜测是这不是您期望的输出。事情是这样的:当您尝试修改函数内部的全局变量(或任何未绑定到函数范围的变量)时,您实际上无法修改它。我发布的代码片段看起来像是在修改var全局范围内的 ,将其设置为 1。但是,真正发生的是创建了一个同名的局部变量并将其设置为 1。

如果您希望该函数能够修改您的全局变量,则必须使用global关键字来表明这一点:

var = 0

def function():
    global var
    var = 1
    print("inside the function", var)

function()
print("outside the function", var)

输出:

inside the function 1
outside the function 1

推荐阅读