Python如何进行分数的求和

需要进行两个分数的输入,并且求和求和的结果需要化简
比如说输入1/5和4/5
输出1

该回答引用于gpt与OKX安生共同编写:
  • 该回答引用于gpt与OKX安生共同编写:

在Python中,可以使用fractions模块来处理分数。以下是一个示例代码,用于输入两个分数并求和:

from fractions import Fraction

# 输入两个分数
num1, den1 = map(int, input("Enter the first fraction (numerator/denominator): ").split('/'))
num2, den2 = map(int, input("Enter the second fraction (numerator/denominator): ").split('/'))

# 将分数转换为Fraction对象,并求和
result = Fraction(num1, den1) + Fraction(num2, den2)

# 输出结果
print(f"The sum is: {result}")

在这个代码中,首先使用input函数获取用户输入的两个分数,并将它们分别存储在num1、den1和num2、den2变量中。然后,使用Fraction函数将这两个分数转换为Fraction对象,并执行加法操作,得到结果。最后,使用print函数输出结果。

  • 如果需要化简结果,可以使用Fraction对象的simplify方法来进行处理。修改上面的代码如下:
from fractions import Fraction

# 输入两个分数
num1, den1 = map(int, input("Enter the first fraction (numerator/denominator): ").split('/'))
num2, den2 = map(int, input("Enter the second fraction (numerator/denominator): ").split('/'))

# 将分数转换为Fraction对象,并求和
result = Fraction(num1, den1) + Fraction(num2, den2)

# 化简结果
result = result.simplify()

# 输出结果
print(f"The simplified sum is: {result}")

注意,在这个代码中,我使用了Fraction对象的simplify方法来化简结果,而不是使用外部库或函数进行处理。

希望这个解决方案能够对您有所帮助!

将分子分母交叉相乘,然后获得最大公约数,分子分母分别除以最大公约数
参考:https://blog.csdn.net/weixin_44289959/article/details/115348483
修改一下:

def zzxc(m, n):
    max_v = max(m, n)
    min_v = min(m, n)
    r = max_v % min_v
    while r != 0:
        max_v = min_v
        min_v = r
        r = max_v % min_v
    return min_v


def fenshu(m, n):
    m_fz, m_fm = map(int, m.split('/'))
    n_fz, n_fm = map(int, n.split('/'))
    max_gb = zzxc(m_fm, n_fm)
    min_gy = m_fm * n_fm // max_gb
    m_xs = min_gy // m_fm
    n_xs = min_gy // n_fm
    new_fz = m_fz * m_xs + n_fz * n_xs
    yf_xs = zzxc(new_fz, min_gy)
    new_fz //= yf_xs
    min_gy //= yf_xs
    return str(new_fz) + '/' + str(min_gy)

m = input()
n = input()
r = fenshu(m,n)
fz, fm = map(int, r.split('/'))
if fz % fm == 0:
    print(fz // fm)
else:
    print(str(fz) + '/' + str(fm))

不用python自带的fraction函数
代码如下:

def zzxc(m, n):
    max_v = max(m, n)
    min_v = min(m, n)
    r = max_v % min_v
    while r != 0:
        max_v = min_v
        min_v = r
        r = max_v % min_v
    return min_v


def fenshu(m, n):
    m_fz, m_fm = map(int, m.split('/'))
    n_fz, n_fm = map(int, n.split('/'))
    max_gb = zzxc(m_fm, n_fm)
    min_gy = m_fm * n_fm // max_gb
    m_xs = min_gy // m_fm
    n_xs = min_gy // n_fm
    new_fz = m_fz * m_xs + n_fz * n_xs
    yf_xs = zzxc(new_fz, min_gy)
    new_fz //= yf_xs
    min_gy //= yf_xs
    return str(new_fz) + '/' + str(min_gy)


n = int(input())
ls = []
for i in range(0, n):
    ls.append(input())
for i in range(0, n - 1):
    ls[0] = fenshu(ls[0], ls[1])
    del ls[1]
fz, fm = map(int, ls[0].split('/'))
if fz % fm == 0:
    print(fz // fm)
else:
    print(str(fz) + '/' + str(fm))

测试样例:
输入:
2
1/5 4/5
输出:
1
如有帮助,望采纳,感激不尽!

Python中可以使用分数模块fractions来进行分数的求和。

以下是一个示例代码,展示了如何使用fractions模块进行分数求和:

from fractions import Fraction

定义两个分数

frac1 = Fraction(1, 4)
frac2 = Fraction(3, 8)

求和

result = frac1 + frac2

输出结果

print(result) # 输出:5/16

在这个例子中,我们首先导入了Fraction类,然后定义了两个分数frac1和frac2,接着使用加号将它们相加,最后将结果存储在变量result中。最后,我们打印result,以便查看求和的结果。

可以使用以下Python代码来输入两个分数,将它们相加,并将结果打印输出:

img


在这个示例中,我们使用Fraction()函数将输入的字符串转换为分数类型。然后,我们将这两个分数相加,并将结果打印到屏幕上。

或多或少大家都会觉得用电脑计算器不能显示分数很麻烦,所以用Python做一个分数加法是极好的

a = input()
b = a.split(',')
 
def eu(a,b):
    if a < b:
        a, b = b, a
    r = 1
    while r != 0:
        r = a % b
        a = b
        b = r
    return a
 
num1 = b[0].split('/')
num2 = b[1].split('/')
sum1 = int(num1[0])*int(num2[1]) + int(num2[0])*int(num1[1])
sum2 = int(num1[1])*int(num2[1])
GCD = eu(sum1,sum2)
 
c = int(sum1/GCD)
d = int(sum2/GCD)
 
if c%d == 0:
    print(int(c/d))
else:
    print(str(c)+ '/'+str(d))

实际上用fractions模块可以瞬间解决问题


```bash
from fractions import Fraction
a,b = (input().split(','))
sum=Fraction(a)+Fraction(b)
print(sum)

```

在Python中,可以使用fractions模块来对分数进行处理,包括计算分数之和并对结果进行化简。可以使用Fraction()函数来创建表示分数的对象,它接受两个参数:分子和分母。

以下是一个示例代码片段,演示如何输入两个分数并计算它们的和,并将结果简化为最简分数形式:

pythonfrom fractions import Fractionfraction1 = input("输入第一个分数:")
fraction2 = input("输入第二个分数:")

将输入的字符串分割成分子和分母num1, den1 = fraction1.split('/')

num2, den2 = fraction2.split('/')

将字符串转换为int类型num1, den1, num2, den2 = int(num1), int(den1), int(num2), int(den2)

将两个分数相加result = Fraction(num1, den1) + Fraction(num2, den2)

输出结果的最简分数形式print("结果:", result.numerator // result.gcd(result.numerator, result.denominator), "/", result.denominator // result.gcd(result.numerator, result.denominator))

在上面的例子中,程序通过输入两个分数,并使用split()函数将输入的字符串分割成分子和分母。然后,将每个分数的分子和分母转换为int类型,并使用Fraction()函数创建表示分数的对象。两个分数对象相加,并使用gcd()函数找到它们的公约数,最后将结果的分子和分母分别除以公约数,以获得最简分数表示形式的结果。

from fractions import Fraction

# 输入两个分数
frac1 = Fraction(input("请输入第一个分数:"))
frac2 = Fraction(input("请输入第二个分数:"))

# 分数求和
result = frac1 + frac2

# 化简结果
simplified_result = result.numerator // result.denominator

# 输出结果
print("求和结果为:", simplified_result)

在Python中fractions模块就是专门对分数进行处理的呀