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
相关产品推荐
相关产品推荐

