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

汇率字典键匹配子串返回值失败,AssertionError报错排查

问题排查与修复

常见错误根源

  • 遍历汇率字典时,未完成全量遍历就提前返回None,跳过了后续可能匹配的键
  • 匹配逻辑不符合业务需求(比如错误判断键是否以目标货币结尾,而非包含/开头)
  • 方法内部循环逻辑错误,导致匹配到目标键时未正确返回对应汇率

修正后的代码实现

exchange_rates = {'USDSEK': 10, 'EURSEK': 10}

class MultiCurrencyAccount:
    def conversion_rate(self, currency):
        # 遍历所有汇率键值对,逐一检查匹配
        for rate_code, rate_value in exchange_rates.items():
            # 检查当前汇率代码是否包含目标货币(若需精准前缀匹配,可改用rate_code.startswith(currency))
            if currency in rate_code:
                return rate_value
        # 未找到对应汇率时的处理,可按需返回默认值或抛出异常
        return None  # 或替换为 raise ValueError(f"无对应货币{currency}的汇率")

# 验证代码
account = MultiCurrencyAccount()
assert account.conversion_rate('USD') == 10, "USD汇率匹配失败"
assert account.conversion_rate('EUR') == 10, "EUR汇率匹配失败"

核心优化点

  • 确保遍历所有汇率项,不会中途提前返回None遗漏匹配项
  • 匹配逻辑可灵活调整:如果业务要求目标货币必须是汇率代码的前缀(比如USD必须在USDSEK开头),将currency in rate_code替换为rate_code.startswith(currency),能避免误匹配(比如避免把SEKUSD中的USD识别为目标货币)
  • 未找到汇率时的处理更清晰,可根据实际业务选择返回默认值或抛出异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 05:22:07