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

如何在Python中使用fractions模块输出带分数形式运算结果

实现分数运算结果的带分数输出

你可以通过编写一个独立的转换函数来实现带分数输出,完全不会破坏原有代码的运算逻辑——原有代码负责计算,这个函数只处理结果的格式转换。

转换函数的思路

对于一个fractions.Fraction对象:

  • 如果分子绝对值小于分母:直接返回原分数的字符串形式
  • 如果分子绝对值大于等于分母:
    1. 计算整数部分:分子 // 分母
    2. 计算剩余分数部分:分子 % 分母 / 分母(会自动约分)
    3. 如果剩余分数为0,只返回整数;否则返回整数部分 剩余分数的格式
  • 处理负数情况:负号只保留在整数部分前

修改后的完整代码

import fractions

def convert_to_mixed(frac):
    # 处理负数,先取绝对值计算,最后加负号
    sign = "-" if frac < 0 else ""
    abs_frac = abs(frac)
    integer_part = abs_frac.numerator // abs_frac.denominator
    remainder_numerator = abs_frac.numerator % abs_frac.denominator
    
    if remainder_numerator == 0:
        return f"{sign}{integer_part}"
    elif integer_part == 0:
        return f"{sign}{abs_frac}"
    else:
        remainder_frac = fractions.Fraction(remainder_numerator, abs_frac.denominator)
        return f"{sign}{integer_part} {remainder_frac}"

# 原有输入和运算逻辑完全不变
num1 = int(input('Enter 1st number Numerator: '))
den1 = int(input('Enter 1st number Denominator: '))

num2 = int(input('Enter 2nd number Numerator: '))
den2 = int(input('Enter 2nd number Denominator: '))

f1 = fractions.Fraction(num1, den1)
f2 = fractions.Fraction(num2, den2)

equ = str(input('Select Operation, +, * or /?: '))

# 输出时调用转换函数
if equ == '*':
    print('{} * {} = {}'.format(f1, f2, convert_to_mixed(f1 * f2)))

if equ == '/':
    print('{} / {} = {}'.format(f1, f2, convert_to_mixed(f1 / f2)))

if equ == '+':
    print('{} + {} = {}'.format(f1, f2, convert_to_mixed(f1 + f2)))

测试效果

比如输入1/4 + 5/4,会输出1/4 + 5/4 = 1 1/2;如果是7/2,会输出3 1/2;如果是3/4,则直接输出3/4;负数比如-5/2会输出-2 1/2。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 00:28:18