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

为何将elif改为if结果不同?交互统计中Other始终为0的问题

问题分析与修复

你的代码里Other计数始终为0的核心原因是elif的逻辑判断写错了:

elif values[1] == "HBOND" or "WEAK_HBOND" or "POLAR" or "WEAK_POLAR":

在Python中,or会逐个判断表达式的布尔值。这里除了第一个values[1] == "HBOND"是有效判断,后面的"WEAK_HBOND"等非空字符串本身会被视为True。也就是说,不管values[1]实际是什么,这个elif条件永远成立,导致else分支完全不会被触发,Other自然一直是0。

修复后的代码

推荐用更简洁的in操作符来判断,避免重复写values[1] ==:

Hydrophilic = 0
Hydrophobic = 0
Other = 0

with open(filename) as f:
    lines = f.readlines()
    for line in lines:
        values = line.split(",")
        # 避免格式错误的行导致索引越界
        if len(values) < 2:
            continue
        interaction = values[1].strip()  # 去除可能的空格/换行符干扰
        if interaction == "HYDROPHOBIC":
            Hydrophobic += 1
        elif interaction in ("HBOND", "WEAK_HBOND", "POLAR", "WEAK_POLAR"):
            Hydrophilic += 1
        else:
            Other += 1

sizes = {'Hydrophilic': Hydrophilic, 'Hydrophobic': Hydrophobic, 'Other': Other}
print(sizes)

额外优化说明

  • 加入len(values) < 2的判断,防止文件中存在格式错误的行抛出IndexError
  • 用.strip()处理values[1],避免数据中附带的空格、换行符干扰判断逻辑

修复后,所有不符合前两类的交互都会被正确统计到Other中,匹配你的预期输出。

内容的提问来源于stack exchange,提问作者amy-elouise

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 06:47:41