Python调用全局变量'timesUsrPlayed'触发Pylance未定义报错咨询
问题修复方案
错误根因
Python作用域规则规定:如果函数内部对某个变量执行赋值操作(timesUsrPlayed += 1本质属于赋值操作),默认会将该变量识别为函数内部的局部变量。你仅在全局作用域定义了timesUsrPlayed,未在randomPartOfGame函数内声明要使用全局变量,因此Pylance会抛出未定义变量的报错。
修复步骤
- 第一步:在
randomPartOfGame函数首行添加global timesUsrPlayed声明,显式指定该变量使用全局作用域的定义 - 第二步:补充导入
time模块,原代码mainGameFunction中调用了time.sleep但未导入该模块,直接运行会触发模块不存在的报错 - 第三步:调整计数逻辑顺序,没猜中时先执行计数再递归调用,避免次数统计顺序错误
修复后完整代码
import os import random import time # 清屏函数 clear = lambda: os.system('cls') # 游戏次数统计 timesUsrPlayed = 0 def randomPartOfGame(): global timesUsrPlayed n = random.randint(0,6) p = random.randint(0,6) print(f"{n} 和 {p}") if n != p: print("抱歉请再试一次") timesUsrPlayed += 1 randomPartOfGame() else: print(f"恭喜你成功了!你一共尝试了{timesUsrPlayed}次才摇出双骰子相同点数") def mainGameFunction(): print('游戏开始...') time.sleep(2) clear() print('欢迎游玩,你需要摇出两个点数相同的骰子才算获胜') randomPartOfGame() if __name__ == "__main__": mainGameFunction()
内容的提问来源于stack exchange,提问作者jacob
相关产品推荐
相关产品推荐

