You need to enable JavaScript to run this app. Python掷骰子游戏输入“yes”后无法重开,进程直接退出
优惠活动
大模型
产品
解决方案
定价
更多

Python掷骰子游戏输入“yes”后无法重开,进程直接退出

核心问题梳理
  • 判断逻辑引用错误:二次询问是否重玩时,用户的输入结果被存在dice变量中,但后续分支判断错误地拿Python内置的input函数对象和字符串"yes"/"no"做对比,函数和字符串永远不可能相等,两个分支判断全部失效,无论用户输入什么,程序都会直接走到代码末尾退出。
  • 缺少循环结构:现有代码为纯顺序执行逻辑,没有可重复触发游戏流程的循环块,即便修正了判断条件,也没有机制能重新运行掷骰流程。
  • 基础依赖缺失:代码调用random.randint生成随机数,但没有写import random的导入语句,实际运行会直接触发NameError报错。
  • 冗余逻辑失效:开头的dicegame=input("wanna play dice? yes/no : ")没有做任何校验,不管用户输入什么都会直接进入掷骰环节,和初始问询的预期逻辑不符。
修正后的可运行代码
import random

# 用无限循环包裹游戏核心流程,满足重玩需求
while True:
    # 生成双方随机骰子值
    userdice1 = random.randint(1, 6)
    userdice2 = random.randint(1, 6)
    pythondice1 = random.randint(1, 6)
    pythondice2 = random.randint(1, 6)

    # 展示骰子结果
    print(f"you got {userdice1} and {userdice2}")
    print(f"and i got {pythondice1} and {pythondice2}")

    # 计算点数并判断胜负
    user_score = userdice1 + userdice2
    python_score = pythondice1 + pythondice2
    if user_score == python_score:
        print("its a tie!")
    elif user_score < python_score:
        print("i won!")
    else:
        print("you won!, great job")

    # 询问是否继续游玩
    user_choice = input("wanna play again? yes/no : ")
    if user_choice == "no":
        print("cya later.")
        # 跳出循环,结束程序
        break
修正说明
  • 把分支判断的对比对象改成实际存储用户输入的变量,不会再出现判断永远失效的问题。
  • 用while True循环包裹全部游戏流程,只有用户输入no时才会触发break跳出循环,输入yes(或其他非no的内容)都会自动回到循环开头重新跑一遍掷骰流程。
  • 补充了random模块的导入语句,解决随机数调用报错的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.11 17:54:04