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

如何精简这段里亚尔金额计算代码并实现自动化优化?

精简后的里亚尔纸币数量计算代码

首先,优化后的规范代码如下:

# 获取输入金额,用int替代eval更安全
amount = int(input("Enter the amount of money: "))

# 定义里亚尔面额(从大到小排序)
denominations = [500, 200, 100, 50, 20, 10, 5, 2, 1]
counts = []

# 循环计算每个面额的数量
for value in denominations:
    count = amount // value
    counts.append(count)
    amount = amount % value

# 格式化输出结果
print("You have")
for value, count in zip(denominations, counts):
    print(f"\t{value} riyal: {count}")

优化说明

  • 替换不安全的eval:原代码使用eval(input(...))存在安全风险(若用户输入恶意代码会被执行),改用int()直接转换输入为整数,更安全且匹配金额输入场景。
  • 消除重复逻辑:将所有面额存入列表,通过一次循环完成所有面额的数量计算,避免重复编写//和%操作,减少冗余代码的同时,后续添加/修改面额也更便捷。
  • 统一输出格式:用zip()配对面额和数量,循环打印输出,替代原代码中零散的多行f-string拼接,格式更整洁易维护。
  • 提升可读性:使用通用变量名(如denominations、counts)替代单个面额变量,代码逻辑更清晰,符合专业规范。

如果需要更紧凑的写法,可借助divmod()函数同时返回商和余数,一步完成计算:

amount = int(input("Enter the amount of money: "))
denominations = [500, 200, 100, 50, 20, 10, 5, 2, 1]
result = {}

for val in denominations:
    result[val], amount = divmod(amount, val)

print("You have")
for val, cnt in result.items():
    print(f"\t{val} riyal: {cnt}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 08:35:23