Python实现将重量转换为1/4倍数的分数形式杯量
Python 实现重量转1/4倍刻度杯量功能
核心实现逻辑
你原来的代码问题在于直接对杯数取整,丢失了1/4、1/2这类小数刻度的信息,正确的计算逻辑如下:
- 1杯对应240gr,因此1/4杯对应60gr,我们可以先计算输入重量相当于多少个1/4杯,取最接近的整数
- 把得到的1/4杯总个数,按规则转换成要求的字符串格式即可
完整实现代码
def weight_to_cup(x): per_quarter_cup = 240 / 4 # 每1/4杯对应60gr # 计算总共有多少个1/4杯,四舍五入取整 total_quarters = round(x / per_quarter_cup) if total_quarters == 0: return "0" # 计算整数杯数和剩余的1/4杯数 whole_cups = total_quarters // 4 remainder = total_quarters % 4 # 处理余数对应的分数部分 remainder_map = {1: "1/4", 2: "1/2", 3: "3/4"} frac_part = remainder_map.get(remainder, "") # 拼接结果 if whole_cups == 0: return frac_part if not frac_part: return str(whole_cups) return f"{whole_cups} {frac_part}" # 测试示例 print(f"cup_size: {weight_to_cup(130.3)}") # 输出 cup_size: 1/2 print(f"cup_size: {weight_to_cup(10)}") # 输出 cup_size: 0 print(f"cup_size: {weight_to_cup(310)}") # 输出 cup_size: 1 1/4 print(f"cup_size: {weight_to_cup(351)}") # 输出 cup_size: 1 1/2
代码说明
- 先通过
x / 60计算出输入重量对应的1/4杯总个数,四舍五入后得到整数,保证结果是1/4的整数倍 - 用字典映射余数对应的简化分数,避免重复的条件判断
- 分情况拼接整数部分和分数部分的字符串,完全符合要求的输出格式
内容的提问来源于stack exchange,提问作者eduardosufan
相关产品推荐
相关产品推荐

