python - 有没有办法添加到全局变量?
问题描述
我正在尝试在 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。
解决方案
看看这里:
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
推荐阅读
- r - 加快代码查找向量中每 12 个元素之间的差异
- keras - 您可以将 SageMaker 训练的模型加载到 Keras 中吗?
- c++ - 有没有办法加快c/c++中多播消息的连接时间?
- java - 启动 Camera RuntimeException - android 相机 API
- windows - “ECHO 开启”在变量中设置
- java - 从 Android 上的 night 文件夹中获取颜色
- pandas - 如何根据另一列值的函数输出在df中插入值
- php - Apache,如何处理未知的 php 文件,如标准 URL?
- scala - Scala:函数参数 Int 或 Double,如何使其通用?
- sql - JOIN 使用透视数据提高性能