问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用python带分数和分数

发布网友 发布时间:2022-05-10 23:46

我来回答

2个回答

热心网友 时间:2022-05-11 01:15

#!/usr/bin/env python3
from random import randint, choice


def mm(m, n):
    """求两个整数的最小公倍数"""
    if m > n:
        m, n = n, m
    if m == n or m == 1 or n % m == 0:
        return n
    for i in range(2, n+1):
        if m * i % n == 0:
            return m * i

        
def mn(m, n):
    """求两个整数的最小公约数"""
    if m > n:
        m, n = n, m
    if m == n or m == 1 or n % m == 0:
        return m
    r = 1
    for i in range(2, m):
        if m % i == 0 and n % i  == 0:
            r = i
    return r


def rd(t=3):
    """随机生成一个分数"""
    w = randint(1, 9)
    d = randint(2, 9)
    n = randint(1, d-1)
    m = mn(d, n)
    return [w, n//m, d//m]


def show(a):
    """[1, 1, 2] --> '1 1/2'"""
    return '{} {}/{}'.format(*a)


def imp(a):
    """1 1/2 --> 3/2"""
    return [a[0]*a[2]+(a[0]//abs(a[0]))*a[1], a[2]]


def unimp(a):
    """3/2 --> 1 1/2"""
    m = mn(abs(a[0]), a[1])
    n, d = a[0] // m, a[1] // m
    return (n//abs(n))*(abs(n) // d), abs(n) % d, d 


def add(a, b, negative=False):
    a, b = imp(a), imp(b)
    m = mm(a[1], b[1])
    sign = -1 if negative else 1
    r = a[0] * m // a[1] + sign * b[0] * m // b[1], m
    return unimp(r)


def main():
    right = 0
    for i in range(20):
        print('Question {}:'.format(i+1))
        a, s, b = rd(), choice(('+', '-')), rd()
        result = show(add(a, b, s=='-'))
        inp = input('{} {} {} = '.format(show(a), s, show(b))).strip()
        if inp == result or inp == result.lstrip('0 '):
            right += 1
            print('Right.')
        else:
            print('Wrong!The correct result is: {}'.format(result.lstrip('0 ')))
    print('Test complete. Right: {}, wrong: {}, Rate: {}%'.format(
        right, 20-right, right*5))


if __name__ == '__main__':
    main()

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
诛仙2放弃了周一仙领装备的任务怎么办? 诛仙2怀光装备在哪领 诛仙的新手问题 诛仙2中45级的新手诛仙2中45级的新手宝箱? 诛仙2转问题 m4a跟mp3有什么差别? 中日韩的爱情电影有哪些异同点? 日本 电影 好看,还是韩国电影好看? 婚姻是天注定吗 “女强男弱”是婚姻感情中的不治之症,女强是破坏婚姻的主要原因吗? 阿根廷是否全胜 为什么至此巴西会输给阿根廷 详解去吧皮卡丘魔典攻略属性材料全解析 〓关胜和林冲谁更厉害? 16岁美国少女加入中国籍,3个月内为中国拿下3枚金牌,现状如何? 街机三国黑毛什么时间打多 有什么理由可以支持自理谈恋爱(学校开辩论会,辩论支持与不支持谈恋爱,我选择了支持!求辩语!) 中国男子排球目前在世锦赛复活赛到什么状况? 女排败的很惨,但是一些媒体却这样报道,中国女排0:3完败美国队,初一看好像中国女排好像赢了一样,你 一般的银行卡存钱的上限是多少? 个人存款证明的最高限额 什么意气风发成语接龙 成语接龙九个成语最后一个是意气风发 成语接龙 意气风发 后边是什么、 斐粤语怎么读 旭楷两个字加起来 “中文行楷”用粤语怎么说? 谁有经典粤语歌曲的汉字发音对照表? 名字 林楷雄 粤语 怎么说 楷gaai1 楷kaai2 是哪个呢 楷书的"楷"字广东话怎样读? 完败在我手里是啥意思 李晟敏与妻子热舞接吻拉票惨败,现场情况如何? 曾经被誉为一生的对手,而安东尼为什么完败给詹姆斯 昨天加纳和西班牙的控球时间都比对手强,可是都完败了呀 9颗糖果,两人轮流从中拿1-3颗,直到拿完,最后各人所拿糖果总数得数为偶数者胜,怎样拿能确保获胜。 三分球12投10中狂砍38分,张镇麟完败了吗? 从“食物金字塔”可以得到哪些信息 如图所示的食物金字塔是营养学家提出的健康饮食食物结构.(1)其中谷类富含的营养素是______.(2)蛋、 食物的成分主要有蛋白质、糖类、油脂、维生素、无机盐和水等六大类营养素。右图所示的食物金字塔是营养学 食物的成分主要有蛋白质、糖类、油脂、维生素、无机盐和水六大营养素.右图所示的食物金字塔是营养学家提 求推荐游戏……类似于最终幻想15和尼尔机械纪元的这种剧情游戏 请问有没有类似GTA5或者最终幻想15的大型游戏 70G以上的 有没有像鬼泣4,最终幻想15这样画面真实的电脑单机游戏? 食物金字塔提供了哪些信息? 有没有类似最终幻想15还有巫师3这种3a史诗魔幻角色扮演大作游戏呢? 最终幻想15除了奥迪车还有那几种 在朋友家玩了最终幻想15感觉很好玩,我这配置能玩吗? 《女神异闻录 5》和《最终幻想 15》,谁才是JRPG复兴的希望 r7 3750 rtx2060能玩高 画质幽灵行动荒野 最终幻想15以及类似的三a游戏吗? 最终幻想有15有没有啊,还会不会出,最终幻想是我么这代人青春的回忆