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

Python代码仅运行第一组elif语句 无法输出后续OBP判断结果如何解决

问题原因

OBP判断分支的第三个条件存在逻辑错误:

elif .269 >= obp >= .340:

该写法要求数值同时满足「小于等于0.269」和「大于等于0.340」,不存在符合要求的数值,你的测试用例OBP值0.353没有命中任何判断分支,因此没有输出。

修正方案

将OBP判断段的条件按数值从大到小的顺序调整为正确区间即可,修正后完整代码如下:

player=input("球员姓名:")
hits=int(input("安打数:"))
ab=int(input("打数:"))
walks=int(input("保送数:"))
hbp=int(input("触身球数:"))
tb=int(input("总垒数:"))

ba=hits/ab
obp=(hits+walks+hbp)/(ab+walks+hbp)
slg= tb/ab
iso= slg - ba
ops= obp + slg


print(player,"击球率为","{:.3f}".format(ba))
print(player,"上垒率为","{:.3f}".format(obp))
print(player,"长打率为","{:.3f}".format(slg))
print(player,"孤立长打率为","{:.3f}".format(iso))
print(player,"攻击指数为","{:.3f}".format(ops)) # 修复原代码打印时的拼写错误od

if ba >= .300:
    print(player,"击球率等级为精英")
elif .299 >= ba >= .280:
    print(player,"击球率等级为优秀")
elif .279 >= ba >= .260:
    print(player,"击球率等级为高于平均")
elif .259 >= ba >= .250:
    print(player,"击球率等级为平均")
elif ba <= .249:
    print(player,"击球率等级为低于平均")
    
if obp >= .390:
    print(player,"上垒率等级为精英")
elif .389 >= obp >= .370:
    print(player,"上垒率等级为优秀")
elif .369 >= obp >= .340: # 修正此处区间上下限顺序和数值
    print(player,"上垒率等级为高于平均")
elif .339 >= obp >= .320:
    print(player,"上垒率等级为高于平均")
elif obp <= .319:
    print(player,"上垒率等级为低于平均")

修正后测试用例的OBP值0.353会命中第三个判断分支,正常输出上垒率等级提示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 01:24:01