有没有一种方法可以添加到全局变量?

时间:2019-11-02 17:25:58

标签: python

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

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

对于这两个变量,错误消息表明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。

3 个答案:

答案 0 :(得分:0)

您可以在函数中声明

global guessed_letters

但是在这种情况下,由于您只读取var,因此最好将其传递进来:

def is_in_word(guess, guessed_letters):

答案 1 :(得分:0)

您的变量未在您的函数中初始化。在进行max_guessed之前,您必须在循环之外将max_guessed += 1声明为max_guessed = 0;

答案 2 :(得分:0)

在这里看看:

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来修改全局范围内的global。但是,实际上发生的是创建了一个具有相同名称的局部变量并将其设置为1。

如果您希望函数能够修改全局变量,则必须使用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

输出:

{{1}}