猫史档案馆


【Python作品分享】一次函数生成分数模式面向对象

用户:沉着的狼王蛛Ctm0沉着的狼王蛛Ctm0查看:0 回复:0 评论:0 创建时间:2020-12-08T20:27:14


【作品展示】

center_image

 

【作品介绍】

计算绘制不带根号的一次函数

 

【作品源代码】

import turtle as t
print('''一次函数图像绘制,计算
杨大帅制''')
def gys(a, b):
    a = abs(a)
    b = abs(b)
    if b > a:
        g = a
        a = b
        b = g
    c = a % b
    if c == 0:
        return b
    else:
        a = b
        b = c
        return gys(a, b)


def gbs(a, b):
    i=gys(a,b)
    return int(a * b/ i)


class fenshu():
    def __init__(self,zhi):
        s = 0
        x=zhi
        d=True
        for ee in str(x):
            if ee in ['1','2','3','4','5','6','7','8','9','0','-']:
                continue
            d=False
        if '.' in x:
            m = False
            for i in x:
                if i == '.':
                    m = True
                if m:
                    s += 1
            mu = 1
            for i in range(s-1):
                x = float(x)
                x *= 10
                mu *= 10
                self.zhi=[int(x), mu]
        elif type(x)==list:
            self.zhi=zhi
        elif d:
            self.zhi = [int(x), 1]
        else:
            x = x.split('/')
            self.zhi=[int(x[0]), int(x[1])]
    def jiafa(self,jiashu):
        x=self.zhi
        y=jiashu.zhi
        a, b = x
        c, d = y
        gb = gbs(b, d)
        shua = gb/b
        shuc = gb/d
        return fenshu([a*shua+c*shuc, gb])

    def jianfa(self,jianshu):
        x=self.zhi
        y=jianshu.zhi
        a, b = x
        c, d = y
        gb = gbs(b, d)
        shua = gb/b
        shuc = gb/d
        return fenshu([a*shua-c*shuc, gb])
    def chengfa(self,chengshu):
        a=self.zhi
        b=chengshu.zhi
        return fenshu([a[0]*b[0], a[1]*b[1]])
    def chufa(self,chushu):
        a=self.zhi
        b=chushu.zhi
        return fenshu([a[0]*b[1], a[1]*b[0]])
    def yuefen(self):
        a=self.zhi
        gy = gys(a[0], a[1])
        self.zhi=[a[0]/gy, a[1]/gy]
    def _2str(self):
        self.yuefen()
        a=self.zhi
        
        if a[1] < 0:
            a[0] *= -1
            a[1] *= -1

        
        if a[1] == 1:
            return str(int(a[0]))
        return str(int(a[0]))+'/'+str(int(a[1]))
    def huazheng(self):
        a=self.zhi
        return a[0]/a[1]
t.pensize(3)
cishu=int(input('要画几次?:'))
def j():
    t.left(150)
    t.forward(15)
    t.backward(15)
    t.left(60)
    t.forward(15)
    t.backward(15)
    t.left(150)
t.speed(1000)
t.forward(200)
t.backward(400)
t.forward(200)
t.left(90)
t.forward(200)
t.backward(400)
t.forward(200)
t.forward(200)
j()
t.backward(400)
t.left(180)
j()
t.backward(200)
t.left(90)
t.forward(200)
j()
t.backward(400)
t.left(180)
j()
t.home()
t.left(90)
t.backward(25)
t.up()
t.right(90)
t.forward(5)
t.write('O', font=('Arial', 15, 'normal'))

f=[]
t.pensize(3)
def zuotu():
    global f,n
    k=fenshu(input('请输入k的值:'))
    b=fenshu(input('请输入b的值:'))
    f.append(k)
    f.append(b)
    b.zhi[0]*=15
    zbx=-350*(k.huazheng())+(b.huazheng())
    zby=350*(k.huazheng())+(b.huazheng())
    t.up()
    t.goto(-350,zbx)
    t.down()
    t.goto(350,zby)
    if b.zhi==[0,1]:
        x='(0,0)'
        y=x
    else:
        b.zhi[0]=int(b.zhi[0]/15)
        x='('+b.chufa(k).chengfa(fenshu('-1'))._2str()+',0)'
        y='(0,'+b._2str()+')'
    print('与x轴的交点为'+x+'\n与y轴的交点为'+y)
for i in range(cishu):
    zuotu()
if cishu==2:
    k1,b1,k2,b2 = f
    b喵1=b2.jianfa(b1)#jianfa(b2, b1)
    k1k2=k1.jianfa(k2)#jianfa(k1, k2)
    x =b喵1.chufa(k1k2)._2str() #fenshu(chufa(b喵1, k1k2))
    y = k1.chengfa(b喵1).jiafa(b1.chengfa(k1k2)).chufa(k1k2)._2str()   
    #fenshu(chufa(jiafa(chengfa(k1, b喵1), chengfa(b1, k1k2)), k1k2))
    print('这两条线的交点为('+x+','+y+')')

#s=fenshu('5/6')
#print(s.zhi)
s=input()

 

【提示】

部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:

https://python.codemao.cn


回复

上一页1 页 / 共 0下一页