导航:首页 > 编程语言 > 带分数python

带分数python

发布时间:2022-06-13 03:16:37

‘壹’ 用python带分数和分数

#!/usr/bin/envpython3
fromrandomimportrandint,choice


defmm(m,n):
"""求两个整数的最小公倍数"""
ifm>n:
m,n=n,m
ifm==norm==1orn%m==0:
returnn
foriinrange(2,n+1):
ifm*i%n==0:
returnm*i


defmn(m,n):
"""求两个整数的最小公约数"""
ifm>n:
m,n=n,m
ifm==norm==1orn%m==0:
returnm
r=1
foriinrange(2,m):
ifm%i==0andn%i==0:
r=i
returnr


defrd(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]


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


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


defunimp(a):
"""3/2-->11/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


defadd(a,b,negative=False):
a,b=imp(a),imp(b)
m=mm(a[1],b[1])
sign=-1ifnegativeelse1
r=a[0]*m//a[1]+sign*b[0]*m//b[1],m
returnunimp(r)


defmain():
right=0
foriinrange(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()
ifinp==resultorinp==result.lstrip('0'):
right+=1
print('Right.')
else:
print('Wrong!Thecorrectresultis:{}'.format(result.lstrip('0')))
print('Testcomplete.Right:{},wrong:{},Rate:{}%'.format(
right,20-right,right*5))


if__name__=='__main__':
main()

阅读全文

与带分数python相关的资料

热点内容
网银密码加密失败怎么回事 浏览:725
android开发音乐播放器 浏览:806
ug120阵列命令快捷键 浏览:597
气动隔膜式压缩机 浏览:470
linux如何修改主机名 浏览:104
单片机光标上下移动 浏览:528
数据加密验证 浏览:108
程序员被激怒 浏览:891
winxp找不到服务器dns地址 浏览:842
以文本文件的格式保存考生文件夹 浏览:41
编译原理文法分为几类 浏览:570
JAVA基础学python要多久 浏览:74
java流量控制 浏览:936
java实现多重继承 浏览:707
票据通加密狗怎么在新系统上使用 浏览:795
航模加密狗连接电脑 浏览:473
好用的汇编语言编译器 浏览:863
自己编译安卓虚拟机 浏览:913
中国的古代算法 浏览:656
上层怎么看程序员 浏览:27