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

Python问题:如何在执行脚本时直接传参计算零钱总金额?

问题原因

你当前的代码使用input()函数获取输入,该函数的作用是在程序启动后读取用户交互式输入的内容,因此必须运行脚本后逐行输入数值才能得到结果。你想要的直接在filename.py后拼接参数的效果,需要读取命令行位置参数实现。

修改方案
  • 导入Python内置的sys模块,通过sys.argv获取命令行传入的所有参数
  • sys.argv是一个列表,第一个元素是脚本本身的文件名,后续元素依次是你传入的参数,全部为字符串类型,需要手动转为整数
  • 调用函数时直接传入转换后的参数即可

修改后可直接实现需求的代码如下:

import sys

def coin_value(quarters, dimes, nickels, pennies):
     firsttotal = .25 * quarters + .10 * dimes + .05 * nickels + .01 * pennies
     currency_string = "${:,.2f}".format(firsttotal)
     print(f"The total value of your change is", currency_string)

# 读取命令行参数,跳过第一个文件名,转换为整数后传入函数
quarters = int(sys.argv[1])
dimes = int(sys.argv[2])
nickels = int(sys.argv[3])
pennies = int(sys.argv[4])
coin_value(quarters, dimes, nickels, pennies)

可选优化:增加参数数量校验,避免漏传参数时程序抛出异常

import sys

def coin_value(quarters, dimes, nickels, pennies):
     firsttotal = .25 * quarters + .10 * dimes + .05 * nickels + .01 * pennies
     currency_string = "${:,.2f}".format(firsttotal)
     print(f"The total value of your change is", currency_string)

if len(sys.argv) != 5:
    print("使用方式:python filename.py quarters dimes nickels pennies")
else:
    quarters = int(sys.argv[1])
    dimes = int(sys.argv[2])
    nickels = int(sys.argv[3])
    pennies = int(sys.argv[4])
    coin_value(quarters, dimes, nickels, pennies)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 17:27:02