鱼C论坛

 找回密码
 立即注册
123
返回列表 发新帖
楼主: 新手·ing

[技术交流] Python:每日一题 29(答题领鱼币)

[复制链接]
发表于 2019-8-21 16:47:03 | 显示全部楼层
本帖最后由 panheng 于 2019-8-21 16:55 编辑

符合规则的好繁琐啊。。。。
  1. def multiple(x2,y2):                         #求最小公倍数
  2.     if x2 == 0 or y2 == 0:
  3.         print("分母不能为“0”!")
  4.     else:
  5.         if x2 % y2 == 0:
  6.             z2 = x2
  7.         elif y2 % x2 == 0:
  8.             z2 = y2
  9.         else:
  10.             z2 = x2 * y2
  11.     return z2

  12. def reduction(z1,z2):                          #约分并返回结果
  13.     for i in range(z1, 1, -1):
  14.         if z2 % i == 0 and z1 % i == 0:
  15.             z2, z1 = int(z2 / i), int(z1 / i)
  16.     if z2 == 1:
  17.         result = z1
  18.     elif z1 ==0:
  19.         result = 0
  20.     else:
  21.         result = str(z1) + '/' + str(z2)
  22.     return result

  23. def get_num(str1):                           #获取分子分母
  24.     if '/' in str1:
  25.         x1,x2 = int(str1.split('/')[0]), int(str1.split('/')[1])
  26.         return x1,x2
  27.     else:
  28.         x1,x2 = int(str1),1
  29.         return x1,x2

  30. def add_num(num1,num2):                      #加法
  31.     x1, x2 = get_num(num1)
  32.     y1, y2 = get_num(num2)
  33.     z2 = multiple(x2,y2)
  34.     z1 = int(x1 * z2 / x2 + y1 * z2 / y2)
  35.     return reduction(z1,z2)

  36. def sub_num(num1,num2):                       # 减法
  37.     x1, x2 = get_num(num1)
  38.     y1, y2 = get_num(num2)
  39.     z2 = multiple(x2,y2)
  40.     z1 = int(x1 * z2 / x2 - y1 * z2 / y2)
  41.     return reduction(z1,z2)

  42. if __name__ == '__main__':
  43.     num1 = input("请输入第一个数,分数请使用“a/b”:")
  44.     num2 = input("请输入第一个数,分数请使用“a/b”:")
  45.     calc = input("请输入运算方法“+”或“-”")
  46.     if calc == '+':
  47.         result = add_num(num1,num2)
  48.     elif calc == '-':
  49.         result = sub_num(num1,num2)
  50.     print("{} {} {}的运算结果为:{}".format(num1, calc, num2, result))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-3 14:47:43 | 显示全部楼层

def add(a,b,c,d):
    Divisor = a +c
    if b==d:
       print("%d/%d + %d/%d = %d/%d" % (a,b,c,d,Divisor,b))
    else:
        Denorminator = b*d
        Divisor = a*d + c*b
        print("%d/%d + %d/%d = %d/%d" % (a,b,c,d,Divisor,Denorminator))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-3 19:34:51 | 显示全部楼层
  1. def find(num1,num2):
  2.     while num2 > 0:
  3.         num3 = num1 % num2
  4.         num1 = num2
  5.         num2 = num3
  6.     return num1

  7. def add(a,b,c,d):
  8.     fenzi = a * d + b * c
  9.     fenmu = b * d
  10.     if fenzi > fenmu:
  11.         both = find(fenzi,fenmu)
  12.         fenzi /= both
  13.         fenmu /= both
  14.     elif fenzi < fenmu:
  15.         both = find(fenmu,fenzi)
  16.         fenzi /= both
  17.         fenmu /= both
  18.     return fenzi,fenmu

  19. def sub(a,b,c,d):
  20.     fenzi = a * d - b * c
  21.     fenmu = b * d
  22.     if fenzi > fenmu:
  23.         both = find(fenzi,fenmu)
  24.         fenzi /= both
  25.         fenmu /= both
  26.     elif fenzi < fenmu:
  27.         both = find(fenmu,fenzi)
  28.         fenzi /= both
  29.         fenmu /= both
  30.     return fenzi,fenmu

  31. a = int(input('请输入第一个数的分子:'))
  32. b = int(input('请输入第一个数的分母:'))
  33. c = int(input('请输入第二个数的分子:'))
  34. d = int(input('请输入第二个数的分母:'))
  35. e = input('请输入所做的运算(+ or -):')
  36. if e == '+':
  37.     (fenzi, fenmu) = add(a, b, c, d)
  38. else:
  39.     (fenzi, fenmu) = sub(a, b, c, d)

  40. if fenzi == fenmu:
  41.     print('结果是:1')
  42. else:
  43.     print('结果是:%d/%d' % (fenzi,fenmu))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-28 11:30:12 | 显示全部楼层
  1. def getCommonDivisor(m, d):
  2.     while d:
  3.         m, d = d, m%d
  4.     return m


  5. def calc(m, d):
  6.     if d == 0:
  7.         return "X -- ZeroDivisionError"
  8.     elif m == 0:
  9.         return '0'
  10.     elif m == d:
  11.         return '1'

  12.     com_div = getCommonDivisor(m, d)
  13.     return str(m//com_div) + '/' + str(d//com_div)


  14. def myAdd(a, b, c, d):
  15.     """ a/b + c/d """
  16.     molecule = a*d + b*c
  17.     denominator = b*d
  18.     return calc(molecule, denominator)


  19. def myMinus(a, b, c, d):
  20.     """ a/b - c/d """
  21.     molecule = a*d - b*c
  22.     denominator = b*d
  23.     return calc(molecule, denominator)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-3-25 15:33:25 | 显示全部楼层
  1. def simplify(a,b):
  2.         for i in range(2,a):
  3.                 if a%i==0 and b%i ==0:
  4.                         a = a/i
  5.                         b = b/i
  6.         print(a,'/',b)
  7. def add (a,b,c,d):
  8.         t = a*d
  9.         i = c*b
  10.         simplify(t+i,b*d)

  11. def sub (a,b,c,d):
  12.         t = a*d
  13.         i = c*b
  14.         simplify(t-i,b*d)

  15. if __name__ == '__main__':
  16.         h,j,k,l = map(int,input().split())
  17.         print("加法还是减法呢?(减法输入1 减法输入0)")
  18.         p = int(input())
  19.         if p == 1:
  20.                 add(h,j,k,l)
  21.         else:
  22.                 sub(h,j,k,l)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-18 12:57:01 | 显示全部楼层
def add(a,b,c,d):
    sum_result = a/b + c/d
    return sum_result


if __name__ == '__main__':
    a = int(input('请输入第1个分数的分子:'))
    b = int(input('请输入第2个分数的分母:'))
    c = int(input('请输入第1个分数的分子:'))
    d = int(input('请输入第1个分数的分母:'))
    print(add(a,b,c,d))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-2 18:24:38 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-9 21:59:08 | 显示全部楼层
  1. # 分数加减法

  2. def add(a,b,c,d):
  3.     # 分母相同,直接分子运算
  4.     if b == d:
  5.         temp = a+c
  6.         # 若分子大于分母且为倍数关系
  7.         if temp > b and temp%b == 0:
  8.             temp /= b
  9.             print(temp)
  10.         # 若分母大于分子且为倍数关系
  11.         elif temp < b and b%temp == 0:
  12.             b /= temp
  13.             print(temp,'/',b)
  14.         # 一般情况
  15.         else:
  16.             print(temp,'/',b)
  17.     else:
  18.         a = a*d
  19.         c = c*b
  20.         b = d = b*d
  21.         temp = a+c
  22.         # 若分子大于分母且为倍数关系
  23.         if temp > b and temp%b == 0:
  24.             temp /= b
  25.             print(temp)
  26.         # 若分母大于分子且为倍数关系
  27.         elif temp < b and b%temp == 0:
  28.             b /= temp
  29.             print(temp,'/',b)
  30.         # 一般情况
  31.         else:
  32.             print(temp,'/',b)


  33. def sub(a,b,c,d):
  34.     # 分母相同,直接分子运算
  35.     if b == d:
  36.         temp = a-c
  37.         # 若分子大于分母且为倍数关系
  38.         if temp > b and temp%b == 0:
  39.             temp /= b
  40.             print(temp)
  41.         # 若分母大于分子且为倍数关系
  42.         elif temp < b and b%temp == 0:
  43.             b /= temp
  44.             print(temp,'/',b)
  45.         # 一般情况
  46.         else:
  47.             print(temp,'/',b)
  48.     else:
  49.         a = a * d
  50.         c = c * b
  51.         b = d = b * d
  52.         temp = a - c
  53.         if temp > b and temp % b == 0:
  54.             temp /= b
  55.             print(temp)
  56.         # 若分母大于分子且为倍数关系
  57.         elif temp < b and b % temp == 0:
  58.             b /= temp
  59.             print(temp, '/', b)
  60.         # 一般情况
  61.         else:
  62.             print(temp, '/', b)


  63. add(1,4,2,3)
  64. sub(1,1,1,8)
复制代码


结果
11 / 12
7 / 8
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-10 08:49:31 | 显示全部楼层
学习一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-20 12:07:42 | 显示全部楼层
class Fractioncount:
    def __init__(self,a,b,c,d):
        self.a=a
        self.b=b
        self.c=c
        self.d=d

    def add(self):
        A = int(self.a)
        B = int(self.b)
        C = int(self.c)
        D = int(self.d)
        x = A * D + C * B
        y = B * D
        if x > y:
            smaller = y
        else:
            smaller = x

        for i in range(1, smaller + 1):
            if ((x % i == 0) and (y % i == 0)):
                hcf = i
        fz = x / hcf
        fm = y / hcf
        return '%d/%d' % (fz, fm)
    def sub(self):
        A = int(self.a)
        B = int(self.b)
        C = int(self.c)
        D = int(self.d)
        x = A * D - C * B
        y = B * D
        if x > y:
            smaller = y
        else:
            smaller = x

        for i in range(1, smaller + 1):
            if ((x % i == 0) and (y % i == 0)):
                hcf = i
        fz = x / hcf
        fm = y / hcf
        return '%d/%d' % (fz, fm)
    def mul(self):
        A = int(self.a)
        B = int(self.b)
        C = int(self.c)
        D = int(self.d)
        x = A * B
        y = B * D
        if x > y:
            smaller = y
        else:
            smaller = x

        for i in range(1, smaller + 1):
            if ((x % i == 0) and (y % i == 0)):
                hcf = i
        fz = x / hcf
        fm = y / hcf
        return '%d/%d' % (fz, fm)
    def div(self):
        A = int(self.a)
        B = int(self.b)
        C = int(self.c)
        D = int(self.d)
        x = A * D
        y = B * C
        if x > y:
            smaller = y
        else:
            smaller = x

        for i in range(1, smaller + 1):
            if ((x % i == 0) and (y % i == 0)):
                hcf = i
        fz = x / hcf
        fm = y / hcf
        return '%d/%d' % (fz, fm)
w=Fractioncount(3,2,3,4)
print(w.div(),w.mul(),w.sub(),w.add())
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-20 12:17:56 | 显示全部楼层
本帖最后由 qq1151985918 于 2021-1-20 13:24 编辑
  1. def getDicisor(x ,y):
  2.     if x % y == 0:
  3.         return y
  4.     else:
  5.         return getDicisor(y ,x%y)
  6.    
  7. def add(a ,b ,c ,d):
  8.     if b * d == 0:
  9.         print("输入错误!")
  10.         return
  11.    
  12.     up = a * d + b * c
  13.     down = b * d
  14.    
  15.     dicisor = getDicisor(up,down)
  16.    
  17.     up = up / dicisor
  18.     down = down / dicisor

  19.     text = "%d/%d + %d/%d = %d/%d"%(a,b,c,d,up,down)
  20.     print(text)

  21. def minus(a ,b ,c ,d):
  22.     if b * d == 0:
  23.         print("输入错误!")
  24.         return
  25.         
  26.     up = a * d - b * c
  27.     down = b * d
  28.    
  29.     dicisor = getDicisor(up,down)
  30.    
  31.     up = up / dicisor
  32.     down = down / dicisor
  33.    
  34.     text = "%d/%d - %d/%d = %d/%d"%(a,b,c,d,up,down)
  35.     print(text)
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-20 09:30:41 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-2-20 10:09:09 | 显示全部楼层
def addx(a,b,c,d):
    print(str(a+b)+"/"+str(c+d))
addx(1,2,3,4)   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-1 21:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表