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

如何修改Python骰子游戏代码,实现得分y>4时自动终止运行

问题背景

你最多可以掷6次骰子,随时可以选择停止并获得当前掷出点数对应的美元奖励。例如,Max先后掷出2、4、3、6后选择停止,获得6美元奖励;Hans先后掷出3、2、4、5后停止,获得5美元奖励。假设我们的策略是一直掷骰子直到掷出大于等于4的点数就停止,那么平均每次游戏可以获得多少奖励?如果最大掷骰子次数从6次下调到4次,结果会有什么变化?

原有代码问题说明

  • 未处理连续多次都掷出小于4点数的边界场景,此时变量y未定义会触发运行报错
  • 外层循环固定执行6轮,没有加入「得分y>4就终止运行」的判断逻辑
  • 内层循环的最大掷骰次数硬编码为6,不方便调整为4次做对照测试

修改方案

只需要做两处核心调整即可满足需求:

  1. 补充边界场景处理:如果达到最大掷骰次数仍未掷出≥4的点数,就将最后一次掷出的点数作为本轮得分
  2. 每轮游戏结束输出结果后,判断如果得分大于4,直接终止外层循环结束程序

同时我们把最大掷骰次数、最大游戏轮数都设为可调变量,方便后续做参数调整测试。

修改后完整代码

import random

# 可调参数:单局最大掷骰次数,要测试4次的话直接修改这个值即可
max_roll_per_game = 6
# 最大游戏轮数:避免极端情况一直掷不出大于4的点数导致程序死循环
max_game_rounds = 100

rounds = 0
while rounds < max_game_rounds:
    rounds += 1
    roll_count = 1
    current_score = 0
    while roll_count <= max_roll_per_game:
        x_trial = random.randint(1,6)
        if x_trial >= 4:
            current_score = x_trial
            break
        # 到了最大掷骰次数仍未触发停止条件,取最后一次的掷骰结果作为得分
        if roll_count == max_roll_per_game:
            current_score = x_trial
            break
        roll_count += 1
    
    # 输出本轮结果
    print(f"Round number: {rounds}")
    print(f"Times rolled: {roll_count}")
    print(f"Your score: {current_score}")
    print(f"Your prize: {current_score}\n")
    
    # 得分大于4直接终止所有程序
    if current_score > 4:
        print(f"本轮得分{current_score}大于4,游戏终止")
        break

运行效果示例

某次运行输出如下:

Round number: 1
Times rolled: 3
Your score: 4
Your prize: 4

Round number: 2
Times rolled: 1
Your score: 6
Your prize: 6

本轮得分6大于4,游戏终止

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 19:06:04