像计算机科学家一样思考python(2)

第四章接口设计主要介绍了封装,泛化等过程。个人觉得这是其他python教程中没有专门提及到的,简单来讲就是函数参数的传入过程,理解起来并不难,但是想做到能够灵活运用以减少重复代码的效果还需要多多学习。

import turtle

bob=turtle.Turtle()

输入以上命令,会创建一个新窗口,里面有个箭头代表乌龟(乌龟的名字叫bob哈哈哈哈)。

# -*- coding:utf-8 -*-

import turtle

bob=turtle.Turtle()

print(bob)

turtle.mainloop()

mainloop告诉窗口去等待用户进行某些操作。

bob.fd(100)  此命令可认为让乌龟向前移动,fd的参数是移动的距离,以像素(pixed)为单位,实际移动距离依赖于显示器的分辨率。bk为后退,,lt和rt为左转右转,pu代表笔朝上,pd为笔朝下。

下面代码可以画一个正方形:

 

 

进一步改动代码,我们画一个近似的圆,可变成多边形,最后有类似圆的效果。结果如下图所示:

# -*- coding: utf-8 -*-

import turtle

import math

def  polygon(t,n,length):

    angle = 360/n

    for i in range(n):

        t.fd(length)

        t.lt(angle)

       

if __name__ == '__main__':

    bob = turtle.Turtle()

    polygon(bob, 10, 40)#10边形,半径为40

turtle.mainloop() 

 

 

根据上面的代码,我们可以调处来一个圆,但发现圆太大,边线太长,圆太小,我们又要花时间去画短的边线,程序不够完美,经过进一步的修改,得到下面代码:

# -*- coding: utf-8 -*-

import turtle

import math

def  polygon(t,n,length):

    angle = 360/n

    for i in range(n):

        t.fd(length)

        t.lt(angle)

def circle(t,r):

    circumference= 2* math.pi*r

    n=int(circumference/3)+1

    length=circumference/n

    polygon(t,n,length)

       

if __name__ == '__main__':

    bob = turtle.Turtle()

    circle(bob, 80)

turtle.mainloop() 

 

 

看到习题4-3,写了简单的代码

# -*- coding:utf-8 -*-

import math

import turtle

bob=turtle.Turtle()

bob.lt(36)

bob.fd(60)

bob.lt(54+72)#136

bob.fd(360/5)

bob.lt(54+72)#136

bob.fd(60)

for i in range(4):

    bob.lt(180)

    bob.fd(60)

    bob.lt(54+72)#136

    bob.fd(360/5)

    bob.lt(54+72)#136

    bob.fd(60)

turtle.mainloop()

 

 

上述代码不具有通用性,在此基础上做了小小改动

# -*- coding:utf-8 -*-

import math

import turtle

n=9

bob=turtle.Turtle()

bob.lt(360/(2*n))

bob.fd(60)

bob.lt(90+360/(2*n))

bob.fd(360/n)

bob.lt(90+360/(2*n))

bob.fd(60)

for i in range(n-1):

    bob.lt(180)

    bob.fd(60)

    bob.lt(90+360/(2*n))

    bob.fd(360/n)

    bob.lt(90+360/(2*n))

    bob.fd(60)

turtle.mainloop()

上述代码中,n代表需要画出n边形,此时为9边形,运行结果如下:

 

注意此时我们规定了多边形内部等腰三角形腰长为60,但其实在修改多边形样子时该腰长长度对其形状有很大影响,不同形状需要设定不同的值,因此此腰长需要特定数学公式计算。

转载于:https://www.cnblogs.com/beautifulchenxi/p/9283480.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值