|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
请看下面的代码
- """This module contains a code example related to
- Think Python, 2nd Edition
- by Allen Downey
- http://thinkpython2.com
- Copyright 2015 Allen Downey
- License: http://creativecommons.org/licenses/by/4.0/
- """
- from __future__ import print_function, division
- import math
- import turtle
- def square(t, length):
- """Draws a square with sides of the given length.
- 用给的长度画一个正方形。
- Returns the Turtle to the starting position and location.
- 返回小乌龟开始的方向和位置。
- """
- for i in range(4):
- t.fd(length)
- t.lt(90)
- def polyline(t, n, length, angle):
- """Draws n line segments. 画一个多边形
- t: Turtle object 乌龟项目,t,这个形参好像没有什么特殊的意思,我还没悟透
- n: number of line segments n,代表多边形的边数
- length: length of each segment length,每条边的长度
- angle: degrees between segments angle,两条边的角度
- """
- for i in range(n):
- t.fd(length) #fd,向前移动的距离
- t.lt(angle) #lt,left turn 左转,括号内填的是度数
-
- def polygon(t, n, length):
- """Draws a polygon with n sides.
- t: Turtle
- n: number of sides
- length: length of each side.
- """
- angle = 360.0/n
- polyline(t, n, length, angle)
- def arc(t, r, angle):
- """Draws an arc with the given radius and angle. 用给定的半径 和 角度,画一个弧
- t: Turtle
- r: radius
- angle: angle subtended by the arc, in degrees #角度:圆弧所对的角度,以度为单位
- """
- arc_length = 2 * math.pi * r * abs(angle) / 360 #这个 abs() 应该是一个内建函数,将角度转化成数字(我猜的),周长 = 2πr
- n = int(arc_length / 4) + 3 # 内建函数 int() 的作用是 将括号内的值,转换为 整型,至于这里为什么要将弧长除以4 再 加上3 我就不知道了
- step_length = arc_length / n
- step_angle = float(angle) / n
- # making a slight left turn before starting reduces
- # the error caused by the linear approximation of the arc
- t.lt(step_angle/2)
- polyline(t, n, step_length, step_angle)
- t.rt(step_angle/2)
- def circle(t, r):
- """Draws a circle with the given radius.
- t: Turtle
- r: radius
- """
- arc(t, r, 360)
- # the following condition checks whether we are
- # running as a script, in which case run the test code,
- # or being imported, in which case don't.
- if __name__ == '__main__':
- bob = turtle.Turtle()
- # draw a circle centered on the origin
- radius = 100
- bob.pu()
- bob.fd(radius)
- bob.lt(90)
- bob.pd()
- circle(bob, radius)
- # wait for the user to close the window
- turtle.mainloop()
复制代码
问题:
1. def arc 中 abs(angle) 这个函数是什么意思,我以前没有见过abs函数;
2. def arc 中 n = int(arc_length / 4) + 3 为什么要这么写,有什么作用
3. t.lt(step_angle/2) t.rt(step_angle/2) 为什么要有这两个,为什么要转向 |
|