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

Python骰子游戏/score命令无输出问题的修复方案

问题排查
  • 变量作用域问题:每次调用rolldie()函数时,roll1和roll2都会被重新初始化为空字符串,之前掷骰子的结果不会被保留,输入/score时自然拿不到有效数值。
  • 变量命名错误:处理/roll2命令时,生成的随机数存在了roll_2变量里,但后续计算分数用的是roll2,导致roll2始终是空字符串。
  • 条件分支逻辑错误:/score的elif是和第二个if(判断/roll2)绑定的,只有当输入不是/roll2才会进入这个分支,但如果先输入/roll1再输入/score,这个分支根本不会触发。
  • 类型不匹配:roll1和roll2初始化为字符串,就算有数值,字符串相加也会出问题,应该初始化为整数0。
修复方案

把分数变量提到函数外部作为全局变量,修正变量命名与条件分支结构,统一变量类型:

# 授权验证(密码为任意整数)
while True:
    try:
        pass_word = int(input("Please enter the password: "))
    except ValueError:
        print("Sorry, I didn't understand that.")
        continue
    else:
        break

# 游戏部分
import random

# 全局变量存储两次掷骰结果,初始为0
roll1 = 0
roll2 = 0

def rolldie():
    global roll1, roll2  # 声明使用全局变量
    inputChoice = input("Enter Choice: ")
    
    if inputChoice == "/roll1":
        roll1 = random.randint(1,6)
        print(f"Nice roll! You rolled a {roll1}!")
    elif inputChoice == "/roll2":
        roll2 = random.randint(1,6)
        print(f"Nice roll! You rolled a {roll2}!")
    elif inputChoice == "/score":
        total = roll1 + roll2
        print(f"Your total score is: {total}")
    else:
        print("Invalid command! Use /roll1, /roll2 or /score.")
    
    rolldie()  # 循环调用函数保持游戏运行

rolldie()
修复说明
  1. 将roll1和roll2定义为全局变量,确保每次掷骰的结果能被保留,不会被函数每次调用重置。
  2. 修正/roll2的变量命名,把roll_2改成roll2,保证赋值和后续计算用的是同一个变量。
  3. 把所有命令判断改成elif链式结构,确保每个输入只会进入一个分支,逻辑更清晰。
  4. 变量初始化为整数0,避免字符串相加的类型错误,同时未掷骰时分数显示为0,更合理。
  5. 添加无效命令提示,提升用户体验。

内容的提问来源于stack exchange,提问作者fps

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 13:35:20