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

如何判断状态列表中是否存在Burn类,解决代码同时执行if/else分支问题

问题解决

你的代码核心问题是遍历了每个状态条目,每个条目都会触发一次乘法或除法操作,但你的需求是「只要列表里存在至少一个Burn状态就乘1.2,完全没有就除以1.2」,不是每个状态单独处理,因此才会出现if和else分支都执行的情况。

修正后的代码

list_of_status = []
list_of_status.append(StatusEffect(name="Burn", amount=999))
list_of_status.append(StatusEffect(name="Testing Status", amount=1, timed=300))

# 一次性检查整个列表中是否存在Burn状态
has_burn = any(status.name == "Burn" for status in list_of_status)

if has_burn:
    if lps_multiplier < 1.2:
        lps_multiplier *= 1.2
        updateTotalLPS(list_of_buildings)
else:
    lps_multiplier /= 1.2
    updateTotalLPS(list_of_buildings)

print(lps_multiplier)

关键说明

  • 用any()函数一次性遍历状态列表,只要有一个StatusEffect的name为"Burn"就返回True,这样只会执行一次判断,不会重复修改lps_multiplier。
  • 移除了原有的反向遍历循环,避免每个状态条目都触发一次乘除操作,完全匹配你「整体检测Burn状态」的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 22:57:25