找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 344|回复: 6

[求助] 哥哥们,关于“”分数化简“”的题目,帮小妹批改一下

1

主题

4

帖子

4

积分

贫民

积分
4
vicky2021 发表于 2021-11-22 09:38:33 | 显示全部楼层 |阅读模式
题目截图如下:

题目1-1

题目1-1

题目1-2

题目1-2

题目1-3

题目1-3

我提交的数据如下:

我提交的

我提交的

哪个哥哥帮小妹批改一下,谢谢哈。




回复

使用道具 举报

0

主题

36

帖子

36

积分

贫民

积分
36
Annadie 发表于 2021-11-22 11:16:44 | 显示全部楼层
能不能不用图片?
回复 支持 反对

使用道具 举报

1

主题

4

帖子

4

积分

贫民

积分
4
vicky2021  楼主| 发表于 2021-11-22 13:04:42 | 显示全部楼层
x = input('请输入分数:')
a = ''
b = ''
h = 0
ss =[]
xian = 0
for f in x:
    if f == '/':
        h +=1
    elif h ==0:
        a =a +f
    elif h != 0:
        b = b+f
a = int(a)
b = int(b)
c = a % b
for i in range(1,1000001):
    ss.append(i)
if a >= 1 and a <=1000000:
    if b <=1000000 and b >=1:
        if c != 0:
            if a>b:
                zn = a // b
                zi = a % b
                for i in ss:
                    ai = a % i
                    bi = b % i
                    if ai == 0:
                        if bi == 0:
                            a = a // i
                            b = b // i
                num = len(str(a))
                num2 = 3 - num
                blank = num2 * ' '

                num1 = len(str(b))
                num0 = 3 - num1
                blank1 = num0 * ' '
                xian = num1 * '-'
                print(str(blank)+ str(a))
                print(str(zn)+ str(xian))
                print(str(blank1)+ str(b))
            elif a<b:
                for i in ss:
                    ai = a % i
                    bi = b % i
                    if ai == 0:
                        if bi == 0:
                            a = a // i
                            b = b // i
                num = len(str(a))
                num2 = 2 - num
                blank = num2 * ' '

                num1 = len(str(b))
                num0 = 2 - num1
                blank1 = num0 * ' '
                xian = num1 * '-'
                print(blank + str(a))
                print(str(xian))
                print(blank1 + str(b))
               

        elif c == 0:
            print(str(a //b))
回复 支持 反对

使用道具 举报

0

主题

36

帖子

36

积分

贫民

积分
36
Annadie 发表于 2021-11-22 14:48:46 | 显示全部楼层
43行
print(str(blank)+ str(a))

print(str(blank)+ str(c))
试试看
回复 支持 反对

使用道具 举报

1

主题

4

帖子

4

积分

贫民

积分
4
vicky2021  楼主| 发表于 2021-11-22 17:52:54 | 显示全部楼层
成功了,谢谢哥哥,没想到是最后的输出错了
回复 支持 反对

使用道具 举报

1

主题

4

帖子

4

积分

贫民

积分
4
周滔[Tom] 发表于 2021-11-23 13:08:44 | 显示全部楼层
"""
    来自 https://bbs.pythontab.com/thread-39894-1-1.html
"""


def print_fracti**(n1, n2):
    """
        输入2数 以分数的形式在控制台打印来
        比如
          3          2
        ---         2-
        100          3
    百分之三        23分之2
    :param n1:
    :param n2:
    :return:
    """
    common_divisor = max_common_divisor(n1, n2)
    # 简化结果 n1 / common_divisor 比如 30 / 10 =3
    m1 = int(n1 / common_divisor)
    m2 = int(n2 / common_divisor)
    if m1 > m2:
        #    26÷8=3 2 被除数÷除数=商 余数 24=被除数 8=除数 3= 2=余数
        quotient = m1 // m2
        # 余数
        remainder = m1 % m2
        # 最长部分的字符
        max_char_length = len(str(quotient)) + len(str(m2))
        # 打印第一行
        print_number(remainder, max_char_length)
        # 打印第二行
        print_dividers_and_quotient(quotient, max_char_length)
        # 打印第三行
        print_number(m2, max_char_length)
    else:
        # 最长部分的字符
        max_char_length = len(str(m2))
        # 打印第一行
        print_number(m1, max_char_length)
        # 打印第二行
        print_dividers(max_char_length)
        # 打印第三行
        print_number(m2, max_char_length)


def print_number(number, max_char_length):
    """
        打印数字
    :param number: 被打印数字
    :param max_char_length: 长度
    :return:
    """
    for i in range(max_char_length - len(str(number))):
        print(" ", end='')
    print(number)


def print_dividers(max_char_length):
    """
        打印分割符
    :param max_char_length: 长度
    :return:
    """
    for i in range(max_char_length):
        print("-", end='')
    print()


def print_dividers_and_quotient(quotient, max_char_length):
    """
        打印分割符和商
    :param quotient:
    :param max_char_length: 长度
    :return:
    """
    print("%d" % quotient, end='')
    for i in range(max_char_length - len(str(quotient))):
        print("-", end='')

    print()


def max_common_divisor(a, b):
    """
        2数最大公约数 无顺序之分
    :param a: 1
    :param b: 2
    :return: 最大公约数
    """
    t = 1
    for i in range(2, min(a, b)):
        while a % i == 0 and b % i == 0:
            t = t * i
            a = a / i
            b = b / i
    return t


# 测试
print_fracti**(8, 3)
print_fracti**(3, 8)

回复 支持 反对

使用道具 举报

1

主题

4

帖子

4

积分

贫民

积分
4
vicky2021  楼主| 发表于 2021-11-24 08:32:51 | 显示全部楼层
感谢Tom!
回复

使用道具 举报

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

本版积分规则

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