• SDUT—Python程序设计实验9(模块与包)


    7-1 sdut-分数的化简

    输入一个分数,对该分数化简后输出其最简分式的形式。

    输入格式:
    输入有若干行,每行输入一个分数。

    输出格式:
    对每行输入,输出其真最简分式的形式。

    输入样例:

    6/9
    -2/4
    2/-100
    -4/-6
    0/1000
    
    • 1
    • 2
    • 3
    • 4
    • 5

    输出样例:

    2/3
    -1/2
    -1/50
    2/3
    0
    
    • 1
    • 2
    • 3
    • 4
    • 5

    代码:

    from fractions import *
    
    while True:
        try:
            x, y = map(int, input().split('/'))
            print(Fraction(x, y))
        except:
            break
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    7-2 sdut-oop-8 分数四则运算(类和对象)

    定义类Fraction,在其中定义属性:numerator和denominator,分别表示分子和分母。
    然定再定义两个分数的加、减、乘、除运算的方法。
    在主类中输入2个分数,计算它们的四则运算结果。
    提示:若用Python语言来实现,不必自行创建类,可直接使用fractions模块处理分数的表示与运算。

    输入格式:
    第一行是整数N,表示待进行分数四则运算式子的数量。接下来包含N行输入。
    每行数据是一个字符串,格式是"a/boc/d"。
    其中a, b, c, d为数字(每个数字保证在int类型范围内,为正数并且不存在正号)。o是运算符"+“或者”-“,”*“,”"。

    输出格式:
    对于每一行分数四则运算,输出一行计算结果。

    注意:结果应符合书写习惯,没有多余的符号、分子、分母,并且化简至最简分数形式。

    输入样例:

    5
    1/100+3/100
    1/4-1/2
    1/3-1/3
    1/2*2/1
    1/2\1/2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    输出样例:

    1/25
    -1/4
    0
    1
    1
    
    • 1
    • 2
    • 3
    • 4
    • 5

    代码:

    from fractions import *
    
    n = int(input())
    for i in range(n):
        s = input()
        if '+' in s:
            f1, f2 = map(str, s.split('+'))
            f3 = Fraction(f1) + Fraction(f2)
        elif '-' in s:
            f1, f2 = map(str, s.split('-'))
            f3 = Fraction(f1) - Fraction(f2)
        elif '*' in s:
            f1, f2 = map(str, s.split('*'))
            f3 = Fraction(f1) * Fraction(f2)
        elif '\\' in s:
            f1, f2 = map(str, s.split('\\'))
            f3 = Fraction(f1) / Fraction(f2)
        print(f3)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    7-3 sdut-分数加减法

    编写一个程序,实现两个分数的加减法。

    输入格式:
    输入包含多行数据。
    每行数据是一个字符串,格式是"a/boc/d"。
    其中a, b, c, d是一个0-9的整数。o是运算符"+“或者”-"。

    输出格式:
    对于输入数据的每一行输出两个分数的运算结果。

    注意:结果应符合书写习惯,没有多余的符号、分子、分母,并且化简至最简分数。

    输入样例:
    在这里给出一组输入。例如:

    1/8+3/8
    1/4-1/2
    1/3-1/3
    
    • 1
    • 2
    • 3

    输出样例:
    在这里给出相应的输出。例如:

    1/2
    -1/4
    0
    
    • 1
    • 2
    • 3

    代码:

    from fractions import *
    
    while True:
        try:
            s = input()
            if '+' in s:
                f1, f2 = map(str, s.split('+'))
                f3 = Fraction(f1) + Fraction(f2)
            elif '-' in s:
                f1, f2 = map(str, s.split('-'))
                f3 = Fraction(f1) - Fraction(f2)
            print(f3)
        except EOFError:
            break
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    下面是关于Fraction类的一些知识(化简分数就不需要用gcd了)

    from fractions import Fraction
    或者
    from fractions import *
    
    • 1
    • 2
    • 3

    实例化Fraction类的方法有下面几种:

    1)Fraction(x,y)   #x,y均为整型,x为分子,y为分母2)Fraction(4.5)   #这里用的是浮点数,相当于Fraction(9,2)3)也可以使用str,即字符串类型
         Fraction('6/9') #相当于Fraction(2,3)
    
    • 1
    • 2
    • 3
    • 4

    Fraction类可以自动约分分数,加减乘除和平时一样用就就行,返回的是分数的形式,乘方不太好用,会返回一个浮点数
    212丨acc丨2022.11.25

  • 相关阅读:
    QT6.3学习技巧,快速入门
    日志@Slf4j介绍使用及配置等级
    Springboot ruoyi配置mysql备份定时任务
    在小程序当中渲染树
    聊聊jedis连接池的预热
    Go:微服务架构下的单元测试(基于 Ginkgo、gomock 、Gomega)
    (5)打印nXn方阵
    入手云服务器后,你需要做这些事【基于CentOS】
    LeetCode 2322. 从树中删除边的最小分数 暴力+DFS+优化
    异步同步调用
  • 原文地址:https://blog.csdn.net/qq_51774501/article/details/128031066