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

如何让Python函数优先处理字符串?解决str与int比较报错

解决字符串与整数比较的报错问题

你遇到的报错核心原因是:total_damage可能是字符串类型(比如数字以字符串形式存储,或是除了"Damages not recorded"之外的其他字符串值),直接和damage_scale里的整数做大小比较,就会触发类型不兼容的错误。

下面是修改后的函数,优先处理字符串场景,彻底解决这个问题:

def damage_rate(hurricanes):
    damage_scale = {0: 0,
                    1: 100000000,
                    2: 1000000000,
                    3: 10000000000,
                    4: 50000000000}
    hurricanes_by_damage = {0:[], 1:[], 2:[], 3:[], 4:[], 5:[]}
    
    for cane in hurricanes:
        total_damage = hurricanes[cane]['Damage']
        
        # 优先处理特殊字符串,直接归为0组并跳过后续判断
        if total_damage == "Damages not recorded":
            hurricanes_by_damage[0].append(hurricanes[cane])
            continue
        
        # 尝试将字符串转为整数,处理数字形式的字符串
        try:
            damage_value = int(total_damage)
        except ValueError:
            # 转换失败的非数字字符串,也归为0组
            hurricanes_by_damage[0].append(hurricanes[cane])
            continue
        
        # 用转换后的整数做区间判断
        if damage_value == damage_scale[0]:
            hurricanes_by_damage[0].append(hurricanes[cane])
        elif damage_scale[0] < damage_value <= damage_scale[1]:
            hurricanes_by_damage[1].append(hurricanes[cane])
        elif damage_scale[1] < damage_value <= damage_scale[2]:
            hurricanes_by_damage[2].append(hurricanes[cane])
        elif damage_scale[2] < damage_value <= damage_scale[3]:
            hurricanes_by_damage[3].append(hurricanes[cane])
        elif damage_scale[3] < damage_value <= damage_scale[4]:
            hurricanes_by_damage[4].append(hurricanes[cane])
        else:
            hurricanes_by_damage[5].append(hurricanes[cane])
    
    return hurricanes_by_damage

关键修改说明:

  • 用continue在处理完特殊字符串后直接进入下一次循环,确保字符串场景被优先处理
  • 新增try-except块,把数字形式的字符串转为整数,同时捕获转换失败的异常(比如其他无效字符串)
  • 所有大小比较都基于转换后的整数,彻底避免字符串与整数的类型冲突

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 15:20:22