Python打印变量时未定义报错:Lucky Sevens游戏代码求助
问题分析与修复
你的代码存在三个核心问题:
缩进错误
循环相关的代码(掷骰子、count累加、while循环)没有缩进在main()函数内部,导致这些代码在main()调用前就被执行——此时count、max_money等变量还未初始化,自然会报未定义错误。死循环
while True没有终止条件,不管玩家钱是否花光,循环都会持续运行,永远到不了后续的打印语句。骰子仅掷一次
你只在循环外执行了一次掷骰子操作,循环里一直用同一个结果判断,不符合游戏规则(每回合都需要重新掷骰子)。
修正后的代码
import random def main(): money = int(input("Enter the amount of money you would like to bet: ")) max_money = money count_max = 0 count = 0 # 游戏循环:没钱时终止 while money > 0: count += 1 # 每回合重新掷骰子 die1 = random.randint(1,6) die2 = random.randint(1,6) if die1 + die2 == 7: money += 5 else: money -= 1 # 更新最高金额及对应回合数 if money > max_money: max_money = money count_max = count # 循环结束后输出结果 print("You have gone broke after", str(count), "rolls") print("You should stop after", count_max, "rolls when you had $", max_money) main()
关键修复说明
- 将所有游戏逻辑缩进进
main()函数内部,确保变量初始化完成后再执行循环代码。 - 移除了不必要的
global声明,使用局部变量更符合Python编码规范。 - 把掷骰子代码移到循环内部,保证每回合生成新的随机数。
- 将循环条件改为
while money > 0,玩家没钱时自动终止循环并输出结果。
内容的提问来源于stack exchange,提问作者Pislibsco
相关产品推荐
相关产品推荐

