Python 有没有办法添加到全局变量?

Python 有没有办法添加到全局变量?,python,Python,我正在尝试用Python创建hangman。我有两个变量遇到了麻烦;“透露”和“最大猜测”。我想做的是让玩家输入一个字母,将猜到的字母添加到列表中,并使用函数检查计算机选择的单词的任何字母是否在猜到的字母列表中 然后,该函数有一个for let in字,其中嵌套了一个if语句。if语句的条件是if let是猜测字母,它会将该字母添加到字符串“discovered”中。否则,它会将max_guess增加1,并在显示的字符串中添加下划线。一旦最大猜数达到6,刽子手游戏就结束了 对于这两个变量,错误消

我正在尝试用Python创建hangman。我有两个变量遇到了麻烦;“透露”和“最大猜测”。我想做的是让玩家输入一个字母,将猜到的字母添加到列表中,并使用函数检查计算机选择的单词的任何字母是否在猜到的字母列表中

然后,该函数有一个for let in字,其中嵌套了一个if语句。if语句的条件是if let是猜测字母,它会将该字母添加到字符串“discovered”中。否则,它会将max_guess增加1,并在显示的字符串中添加下划线。一旦最大猜数达到6,刽子手游戏就结束了

对于这两个变量,错误消息表示在赋值之前引用了max_guess和discovered的局部变量,尽管我在函数外部定义了这两个变量,并且只是将它们添加到函数中

   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。

在您的函数中,您可以声明

global guessed_letters
不过,在这种情况下,由于您只是在读取var,因此最好将其传入:

def is_in_word(guess, guessed_letters):

在函数中,您可以声明

global guessed_letters
不过,在这种情况下,由于您只是在读取var,因此最好将其传入:

def is_in_word(guess, guessed_letters):

函数中未初始化变量。在执行像max_gusted=0这样的操作之前,必须在循环外部声明
max_gusted+=1

函数中未初始化变量。在执行像max_gusted=0这样的操作之前,必须在循环外部声明
max_gusted+=1

看看这里:

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
inside the function 1
outside the function 1
我猜这不是你期望的结果。问题是:当您试图修改函数内部的全局变量(或任何未绑定到函数范围的变量)时,您实际上无法修改它。我发布的代码片段看起来像是在修改
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 0
inside the function 1
outside the function 1
请看这里:

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
inside the function 1
outside the function 1
我猜这不是你期望的结果。问题是:当您试图修改函数内部的全局变量(或任何未绑定到函数范围的变量)时,您实际上无法修改它。我发布的代码片段看起来像是在修改
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 0
inside the function 1
outside the function 1

在使用函数之前,必须声明
max\u guess=0
inside
is\u in\u word()
函数。必须声明
max\u guess=0
inside
is\u in\u word()
函数。是的,我在页面刷新后看到了。是的,我在页面刷新后看到了。即使我在函数中创建变量或使其全局化,它也会返回无效的语法,除非您确切地告诉我语法错误发生在哪一行,否则我无法帮助您。即使我在函数或使其全局返回无效语法除非您确切地告诉我语法错误发生在哪一行,否则我无法帮助您。我的代码第二部分的语法无效。“第二部分”?你能说得更具体一点吗?堆栈跟踪应该准确地告诉你什么是无效的。。。顺便说一句,在字符串中添加“let”将添加文字字符串“let”。丢失引号以添加var let中的实际字母。我现在得到的代码第二部分的语法无效。“第二部分”?你能说得更具体一点吗?堆栈跟踪应该准确地告诉你什么是无效的。。。顺便说一句,在字符串中添加“let”将添加文字字符串“let”。丢失引号以添加var let中保留的实际字母。