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

硬币兑换美元金额计算程序出现KeyError:0错误,求解决

解决硬币兑换金额计算程序中的KeyError问题

错误原因

KeyError: 0的核心问题是代码逻辑错误:
你用enumerate(coins)获取的k是列表的索引值(从0开始递增),但coin_values字典的键是硬币的面额数值(10、20、50、1、2)。用索引去字典中查找不存在的键,自然会抛出KeyError。

修复方案

根据你的输入逻辑,分两种常见场景修复:

场景1:输入是对应面额的硬币数量

如果你的输入格式是「10分硬币数量 20分硬币数量 50分硬币数量 1美元硬币数量 2美元硬币数量」(比如输入2 1 0 3 1表示2个10分、1个20分、3个1美元、1个2美元),修改代码如下:

# Function to calculate total amount from coins received
def calculate_amount(coins):
    # 按输入顺序对应各面额的美元价值
    coin_values = [0.1, 0.2, 0.5, 1, 2]
    # 遍历数量列表,计算总金额
    total_amount = sum([value * count for value, count in zip(coin_values, coins) if count > 0])
    return total_amount

# Take input from user
coins = list(map(int, input().split()))

# Call the function to calculate total amount
total_amount = calculate_amount(coins)

# Print the total amount in dollars
print("%.2f dollar" % total_amount)

或者保留字典结构,明确面额顺序:

def calculate_amount(coins):
    coin_values = {10: 0.1, 20: 0.2, 50: 0.5, 1: 1, 2: 2}
    # 与输入顺序对应的面额列表
    denominations = [10, 20, 50, 1, 2]
    total_amount = sum([coin_values[denom] * count for denom, count in zip(denominations, coins) if count > 0])
    return total_amount

场景2:输入是单个硬币的面额集合

如果你的输入格式是「多个硬币面额的集合」(比如输入10 10 20 50 1表示两个10分、一个20分、一个50分、一个1美元),修改代码逻辑为统计每个面额的金额总和:

# Function to calculate total amount from coins received
def calculate_amount(coins):
    coin_values = {10: 0.1, 20: 0.2, 50: 0.5, 1: 1, 2: 2}
    total_amount = 0
    for coin in coins:
        # 仅处理字典中存在的面额
        if coin in coin_values:
            total_amount += coin_values[coin]
    return total_amount

# Take input from user
coins = list(map(int, input().split()))

# Call the function to calculate total amount
total_amount = calculate_amount(coins)

# Print the total amount in dollars
print("%.2f dollar" % total_amount)

验证说明

  • 场景1输入示例:2 1 0 3 1,输出应为5.40
  • 场景2输入示例:10 10 20 50 1,输出应为1.90

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 22:17:30