如何判断状态列表中是否存在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
相关产品推荐
相关产品推荐

