You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python打印变量时未定义报错:Lucky Sevens游戏代码求助

问题分析与修复

你的代码存在三个核心问题:

  1. 缩进错误
    循环相关的代码(掷骰子、count累加、while循环)没有缩进在main()函数内部,导致这些代码在main()调用前就被执行——此时count、max_money等变量还未初始化,自然会报未定义错误。

  2. 死循环
    while True没有终止条件,不管玩家钱是否花光,循环都会持续运行,永远到不了后续的打印语句。

  3. 骰子仅掷一次
    你只在循环外执行了一次掷骰子操作,循环里一直用同一个结果判断,不符合游戏规则(每回合都需要重新掷骰子)。


修正后的代码

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 16:37:50