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

使用Python的sys.argv模块计算硬币总价值(美元)时出现结果异常的技术问询

解决命令行硬币总价值计算的问题

嘿,我来帮你理清代码里的问题,让它正确计算硬币总价值!

你的代码里的核心问题:

  1. 字符串重复而非数值计算:sys.argv获取的命令行参数都是字符串类型,直接用*操作符会让字符串重复(比如'9' * 2会变成'99'),这就是你看到输出一堆重复数字的根本原因。
  2. 逻辑完全错误的计算式:你写的sum = int((sys.argv[1]) * 2 + (sys.argv[2]) * 3 + ...)完全不符合硬币价值的计算逻辑,每个硬币数量应该乘以对应的面值(25美分=0.25美元,10美分=0.1美元等)。
  3. 多余的for循环:你的循环从1到5,但每次循环都重新给sum赋值,循环根本没起到任何作用,反而多余。

修正后的代码

这里提供两种可靠的写法,你可以任选一种:

写法1:直接计算美元金额(简单直观)

import sys

# 先把命令行参数转成整数
quarters = int(sys.argv[1])
dimes = int(sys.argv[2])
nickels = int(sys.argv[3])
pennies = int(sys.argv[4])

# 计算总价值:每个硬币数量乘以对应美元面值
total = quarters * 0.25 + dimes * 0.1 + nickels * 0.05 + pennies * 0.01

# 格式化输出,保留两位小数更符合美元的显示习惯
print(f'Result: ${total:.2f}')

写法2:先算总美分数再转美元(避免浮点精度问题)

如果担心浮点运算的精度问题,可以先计算总美分数,再除以100转成美元:

import sys

quarters = int(sys.argv[1])
dimes = int(sys.argv[2])
nickels = int(sys.argv[3])
pennies = int(sys.argv[4])

# 计算总美分数
total_cents = quarters * 25 + dimes * 10 + nickels * 5 + pennies * 1
# 转成美元
total_dollars = total_cents / 100

print(f'Result: ${total_dollars:.2f}')

运行测试

当你在命令行输入:

python egg.py 9 7 3 6

正确输出会是:

Result: $3.16

(计算过程:925 +710 +35 +61 = 225+70+15+6=316美分 = 3.16美元)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.01 02:47:41