Python 代码理解 polygon.py

Python 代码理解 polygon.py

1、运行和阅读代码

该代码的主要功能为通过调用不同的包,设置不同的线段数、线段长度和角度等条件,进行不同图形的绘制。

经过环境配置和代码阅读后,初步运行代码如下图所示:

在这里插入图片描述

2、理解代码功能

具体功能理解将在代码中以注释形式体现:

import math

try:
    #查看Swampy是否以包的形式安装
    from swampy.TurtleWorld import *
except ImportError:
    #否则查看模块是否在PYTHONPATH中
    from TurtleWorld import *
def square(t, length):
    #绘制具有给定边长的四边形
    #length: 边长
    
    for i in range(4):
        fd(t, length)				#forward:向前走指定长度length
        lt(t)						#left_turn:向左转指定角度(此处指定角度缺省,因为在函数定义时已初设为90°)
def polyline(t, n, length, angle):
    #绘制具有给定边数和边长的正多边形(具体执行函数)
    #t: Turtle对象
    #n: 边数
    #length: 边长
    #angle: 两边夹角
    
    for i in range(n):	
        fd(t, length)				#forward:向前走指定长度length
        lt(t, angle)				#left_turn:向左转指定角度angle
def polygon(t, n, length):
    #绘制具有给定边数和边长的正多边形(入口函数)
   	#t: Turtle对象
    #n: 边数
    #length: 边长
    #angle: 两边夹角
    
    angle = 360.0/n
    polyline(t, n, length, angle)	#绘制操作在polyline()函数中具体执行
def arc(t, r, angle):
    #绘制具有给定半径和角度的圆弧
    #t: Turtle对象
    #r: 半径
    #angle: 弧度角,以度表示

    arc_length = 2 * math.pi * r * abs(angle) / 360
    n = int(arc_length / 4) + 1
    step_length = arc_length / n
    step_angle = float(angle) / n

    #在开始前稍作左转可以减少弧的线性近似所引起的误差
    lt(t, step_angle/2)
    polyline(t, n, step_length, step_angle)
    rt(t, step_angle/2)
def circle(t, r):
    #绘制给定半径的圆
    #t: Turtle对象
    #r: 半径

    arc(t, r, 360)
if __name__ == '__main__':
    world = TurtleWorld()  			#建立一个TurtleWorld对象,赋值给world

    bob = Turtle()		   			#建立一个Turtle对象,赋值给bob
    bob.delay = 0.001

    #绘制圆心在原点的圆
    radius = 100					#圆的半径为100
    pu(bob)							#将对象的pen属性设为False(即仅移动不绘制)
    fd(bob, radius)					#先让笔尖从原点向右偏离半径radius的距离,作为绘制起点
    lt(bob)							#向左转,朝向圆的切线方向
    pd(bob)							#将对象的pen属性设为True
    circle(bob, radius)				#开始绘制

    #告诉TurtleWorld等待用户进行某些操作(本例中为“关闭窗口”)
    wait_for_user()					

3、修改代码,练习调用文件中其他几个图形函数

下文只列出关键代码段落运行结果

3.1绘制四边形

if __name__ == '__main__':
    world = TurtleWorld()

    bob = Turtle()
    bob.delay = 0.001

    length = 100					#设置四边形边长为100
    pd(bob)
    square(bob, length)

    wait_for_user()			

在这里插入图片描述

3.2绘制一个边数为6的正多边形

if __name__ == '__main__':
    world = TurtleWorld()

    bob = Turtle()
    bob.delay = 0.001

    n = 6							#设置边数为6
    length = 100					#设置边长为100
    pd(bob)
    polygon(bob, n , length)

    wait_for_user()

在这里插入图片描述

3.3绘制一个弧度角为90°的圆弧

if __name__ == '__main__':
    world = TurtleWorld()

    bob = Turtle()
    bob.delay = 0.001

    r = 100							#设置半径为100
    angle = 90						#设置弧度角为90°
    pd(bob)
    arc(bob, r, angle)

    wait_for_user()

在这里插入图片描述

3.4绘制一个小蓝人的头

if __name__ == '__main__':
    world = TurtleWorld()

    bob = Turtle()
    bob.delay = 0.001

    #以下为调参和绘制过程
    radius = 200
    pu(bob)
    fd(bob, radius)
    lt(bob)
    pd(bob)
    circle(bob, radius)

    pu(bob)
    lt(bob)
    fd(bob, 140)
    rt(bob)
    fd(bob, 40)
    pd(bob)
    circle(bob, 8)

    pu(bob)
    lt(bob)
    fd(bob, 104)
    rt(bob)
    pd(bob)
    circle(bob, 8)

    pu(bob)
    rt(bob)
    rt(bob)
    fd(bob, 50)
    pd(bob)
    arc(bob, 44, 180)
    lt(bob)
    fd(bob, 88)
    
    wait_for_user()

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值