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

如何用Python取模与地板除法实现茶匙到多容量单位的层级转换

修复茶匙转大单位优先的换算代码

你的问题核心是现有代码直接用总茶匙数计算各单位数量,没有扣除大单位已占用的量,导致每一行的单位数值都是独立计算的,不符合“大单位优先填充、剩余量用小单位补充”的要求。

正确的换算逻辑

先明确各单位与茶匙的固定换算关系:

  • 1 tablespoon = 3 teaspoons
  • 1 ounce = 6 teaspoons = 2 tablespoons
  • 1 cup = 48 teaspoons = 8 ounces
  • 1 pint = 96 teaspoons = 2 cups

对于每一行的单位组合,需要从大到小依次计算单位数量,用剩余量继续换算下一个小单位,直到算出最终的茶匙数。

修复后的代码

total_teaspoons = 57

# 定义各单位对应的茶匙数量
unit_conversions = {
    'pint': 96,
    'cup': 48,
    'ounce': 6,
    'tablespoon': 3,
    'teaspoon': 1
}

def convert_to_units(total_tsp, unit_order):
    remaining = total_tsp
    parts = []
    for unit in unit_order:
        count = remaining // unit_conversions[unit]
        remaining = remaining % unit_conversions[unit]
        # 处理单位单复数(如1 tablespoon,19 tablespoons)
        unit_label = unit if count == 1 else f"{unit}s"
        parts.append(f"{count} {unit_label}")
    return ', '.join(parts)

# 按要求输出四行结果
print(convert_to_units(total_teaspoons, ['tablespoon', 'teaspoon']))
print(convert_to_units(total_teaspoons, ['ounce', 'tablespoon', 'teaspoon']))
print(convert_to_units(total_teaspoons, ['cup', 'ounce', 'tablespoon', 'teaspoon']))
print(convert_to_units(total_teaspoons, ['pint', 'cup', 'ounce', 'tablespoon', 'teaspoon']))

代码说明

  1. unit_conversions字典统一存储单位换算关系,方便后续维护和修改。
  2. convert_to_units函数通过循环处理单位顺序:
    • 用remaining变量跟踪未换算的剩余茶匙数
    • 计算当前单位的数量后,更新剩余量为总剩余量对当前单位换算值取余
    • 自动处理单位单复数,让输出更符合自然语言习惯
  3. 传入不同的单位顺序列表,即可得到要求的四行分级换算结果。

测试输出

输入57茶匙时,代码会输出:

19 tablespoons, 0 teaspoons
9 ounces, 1 tablespoon, 0 teaspoons
1 cup, 1 ounce, 1 tablespoon, 0 teaspoons
0 pints, 1 cup, 1 ounce, 1 tablespoon, 0 teaspoons

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 16:00:37