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

Range循环中pa_result列表追加异常及打席流程设计疑问

问题1:pa_result 无法正确收集打席结果的修复

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

  1. 缩进错误:pa_result.append(pa_end) 仅在「0-0 出局」的分支下执行,一垒安打、二垒安打等其他打席结束场景完全没有被记录。
  2. 逻辑遗漏:只有当第一个球形成In-Play且结果是出局时,才会向列表添加数据,其他打席结束情况都被忽略。

修复后的代码片段(针对0-0 In-Play场景):

else:
    Fpitch = "0-0 In-Play"
    if 18 <= In_Play() < 41:
        pa_end = "0-0 Single"
    elif 10 <= In_Play() < 18:
        pa_end = "0-0 Double"
    elif 0 <= In_Play() < 1:
        pa_end = "0-0 Triple"
    elif 1 <= In_Play() < 10:
        pa_end = "0-0 Home Run"
    else:
        pa_end = "0-0 OUT"
    # 将append移至所有分支外部,只要进入In-Play就记录打席结果
    pa_result.append(pa_end)

问题2:开发架构选择建议

推荐使用「单打席状态循环」的方式开发,而非在每个球数分支下堆砌逻辑,也不建议用剩余打席数的额外循环。

理由:

  • 打席是完整流程:从初始0-0球数开始,每次投球后更新球数/状态,直到打席结束(出局或上垒)。用状态机思路单独处理每个打席,逻辑更清晰。
  • 避免冗余变量:你当前定义了7个投球结果列表,后续扩展球数(如2-2满球数)会导致变量爆炸,维护成本极高。
  • 扩展性强:后续添加坏球保送、三振出局、界外球等规则时,状态循环模式可轻松插入判断,分支堆砌则会让代码臃肿混乱。

示例架构参考:

import random

def In_Play():
    return random.randint(0,100)

def pitch():
    return random.randint(0,100)

def simulate_pa():
    balls = 0
    strikes = 0
    while True:
        pitch_val = pitch()
        # 处理投球结果,更新球数或判定打席结束
        if pitch_val <=43:
            balls +=1
            if balls ==4:
                return "Walk"  # 保送打席结束
        elif pitch_val >=59:
            strikes +=1
            if strikes ==3:
                return "Strikeout"  # 三振出局
        else:
            # 处理In-Play情况,判定安打/出局
            in_play_val = In_Play()
            if 18 <= in_play_val <41:
                return "Single"
            elif 10 <= in_play_val <18:
                return "Double"
            elif 0 <= in_play_val <1:
                return "Triple"
            elif 1 <= in_play_val <10:
                return "Home Run"
            else:
                return "Out"

# 模拟1000次打席,自动收集所有结果
pa_result = [simulate_pa() for _ in range(1000)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 12:15:31