当前位置:   article > 正文

Python的海龟 turtle 库使用详细介绍(画任意多边形,全网最详细)_正五边形turtle度数

正五边形turtle度数

Turtle库,其实就是学数学,而且还能提高对数学和学习的兴趣。Turtle库还能够帮助孩子更好地理解几何学和数学概念,比如角度、比例、几何图形的性质等等,是Python中一个很有趣的库。

前言

Turtle库是Python中一个很有趣的库,可以用来绘制各种图形,比如直线、圆、正方形等等。掌握Turtle库的意义在于可以培养孩子的创造力和想象力,让他们通过编写代码来实现自己的创意,同时也可以提高他们的编程能力和逻辑思维能力。此外,Turtle库还能够帮助孩子更好地理解几何学和数学概念,比如角度、比例、几何图形的性质等等,学Turtle库其实就是学数学,但更有趣味性。

turtle库介绍

Turtle库是Python的一个标准库,提供了一个绘图的海龟机器人,可以使用Python代码控制海龟机器人的移动和动作,从而实现绘制图形的功能。Turtle库支持绘制直线、圆、椭圆、曲线、填充颜色等功能,可以用来绘制各种各样的图形和图案。使用Turtle库可以加深对Python语言的理解和掌握,同时也可以进行艺术创作和教育活动。

Python内置了turtle库。在1966年,Seymour Papert和Wally Feurzig发明了一种专门给儿童学习编程的语言——LOGO语言,它的特色就是通过编程指挥一个小海龟(turtle)在屏幕上绘图。海龟绘图(Turtle Graphics)后来被移植到各种高级语言中,Python内置了turtle,基本上100%复制了原始的Turtle Graphics的所有功能。

turtle库的使用

使用前需先引入库,可以使用 from turtle import * 或者 import turtle。前者使用方法不需要加 turtle,后者需要加turtle。

简单示例:

  1. import turtle
  2. # 创建一个Turtle对象
  3. t = turtle.Turtle()
  4. #turtle.setup(width,height,startx,starty)
  5. # 移动Turtle对象前进100步
  6. t.forward(100)
  7. # 向左旋转Turtle对象90度
  8. t.left(90)
  9. # 移动Turtle对象前进50步
  10. t.forward(50)
  11. # 创建另一个Turtle对象
  12. t2 = turtle.Turtle()
  13. # 移动Turtle对象t2前进80步
  14. t2.forward(80)
  15. # 绘制线段连接两个Turtle对象的位置
  16. t2.goto(t.xcor(), t.ycor())
  17. # 调用done()使得窗口等待被关闭,否则将立刻关闭窗口:
  18. turtle.done()

画出长方形

从简单的开始,画个长方形。

  1. # 导入turtle包的所有内容:
  2. from turtle import *
  3. # 设置笔刷宽度:
  4. width(4)
  5. # 前进:
  6. forward(200)
  7. # 右转90度:
  8. right(90)
  9. # 笔刷颜色:
  10. pencolor('red')
  11. forward(100)
  12. right(90)
  13. pencolor('green')
  14. forward(200)
  15. right(90)
  16. pencolor('blue')
  17. forward(100)
  18. right(90)
  19. # 调用done()使得窗口等待被关闭,否则将立刻关闭窗口:
  20. done()

从程序代码可以看出,海龟绘图就是指挥海龟前进、转向,海龟移动的轨迹就是绘制的线条。要绘制一个长方形,只需要让海龟前进、右转90度,反复4次。

调用width()函数可以设置笔刷宽度,调用pencolor()函数可以设置颜色。更多操作请参考turtle库的说明。绘图完成后,记得调用done()函数,让窗口进入消息循环,等待被关闭。否则,由于Python进程会立刻结束,将导致窗口被立刻关闭。

绘制任意多边形

增加点难度,学习下数学的几何知识。

多边形的内角公式: 内角 = (n-2) * 180 / n,其中n是多边形的边数。

多边形的所有内角之和等于 180*(n - 2),其中 n 是多边形的边数。

以正五边形为例,将n设置为5,代入公式得到 (5-2) * 180 / 5 = 3 * 180 / 5 = 108度,因此,正五边形的每个内角为108度。

其实类似这类画图问题,都是数学问题,算对了角度,就很容易画了。

多边形内角公式的推导,来学习下数数学知识。

多边形的内角是指多边形内部的任意两个相邻顶点之间的夹角。

证法一:

因为每个三角形的内角之和为 180°,一个n边行,可以分为n-2个三角形。因此,多边形的内角和等于 180*(n - 2)。那么每个内角= (n-2) * 180 / n。

证法二:

任意凸多边形的外角和都为360°,在一个n边形中,每个顶点的外角度数为360度/n。由于多边形有n个顶点,所以外角度数的总和为360度。因此可以得到公式:n * 外角度数 = 360度,即外角度数 = 360度 / n。内角+外角=180度,可以得到多边形的内角公式:内角 = 180度 - (360度 / n) = (n - 2) * 180度 / n。

例如,在一个三角形中,每个顶点的外角度数为 360° / 3 = 120°。 在一个四边形中,每个顶点的外角度数为 360° / 4 = 90°。 在一个五边形中,每个顶点的外角度数为 360° / 5 = 72°。

举例,画几个正五边形:

  1. from turtle import *
  2. import time
  3. def draw5(x, y):
  4. pu()
  5. goto(x, y)
  6. pd()
  7. # set heading: 0
  8. seth(0)
  9. for i in range(5):
  10. fd(40)
  11. rt(72)
  12. time.sleep(1)
  13. for x in range(0, 250, 50):
  14. draw5(x, 0)
  15. done()

出题,如何绘制出五角星?

根据上述公式,如果要绘制五角星,关键是得知道每次转向多少角度?

五角星是144度。为什么是144度,你知道吗?因为正五边形的内角是108度,则它的的补角是72度,五角星的每个角是180-72-72=36度,因此 每次转向180-36 = 144 度。

  1. #绘制一个五角星
  2. from turtle import *
  3. import time
  4. def drawStar(x, y):
  5. pu()
  6. goto(x, y)
  7. pd()
  8. # set heading: 0
  9. seth(0)
  10. for i in range(5):
  11. fd(110)
  12. rt(144)
  13. time.sleep(1)
  14. drawStar(0,0)
  15. done()

以此类推,你能绘制出六角星吗?

也很简单,关键是知道六角星的每个角的角度,求得转向角度。根据多边形的内角公式,多边形内角 = (n-2) * 180 / n,其中n是多边形的边数。

先画出每个小三角形,每次转向60度,再画出剩余5个小三角形,总共是6个小三角形组成了六边形。

  1. from turtle import *
  2. def triangle():
  3. pensize(2)
  4. pencolor('black')
  5. for i in range(3):
  6. fd(60)
  7. right(120)
  8. def test():
  9. colors=['green','red','yellow','pink','purple','orange']
  10. speed(1)
  11. for i in range(6):
  12. begin_fill()
  13. fillcolor(colors[i])
  14. triangle()
  15. fd(60)
  16. left(60) #以坐标系为基准,左转60°
  17. end_fill()
  18. #填充中心颜色
  19. fillcolor("blue")
  20. begin_fill()
  21. for i in range(6):
  22. fd(60)
  23. left(60)
  24. end_fill()
  25. ht()#隐藏画笔
  26. done()
  27. test()
  1. from turtle import *
  2. def triangle(x):
  3. pensize(2)
  4. pencolor('black')
  5. for i in range(3):
  6. fd(x)
  7. right(120)
  8. def main():
  9. speed(8)
  10. colors=['green','red','yellow','blue']
  11. for j in range(1,7):
  12. for i in range(4):
  13. if j >= 2:
  14. triangle(160 + j * 10)
  15. left(90)
  16. else:
  17. fillcolor(colors[i])
  18. begin_fill()
  19. triangle(160)
  20. left(90)
  21. end_fill()
  22. ht()
  23. main()
  24. done()

 猜一猜以下代码将画出什么图形?

  1. from turtle import *
  2. def triangle():
  3. pensize(2)
  4. pencolor('black')
  5. for i in range(3):
  6. fd(160)
  7. right(120)
  8. def test():
  9. penup()
  10. setpos(-100,140)#画笔移动到一个绝对坐标。(开始默认画笔居中)
  11. pendown()
  12. speed(5)
  13. colors=['green','red','pink','purple','blue','yellow','orange']
  14. for i in range(6):
  15. fillcolor(colors[i])
  16. begin_fill()
  17. triangle()
  18. fd(160)
  19. right(60)
  20. end_fill()
  21. ht()
  22. #执行
  23. test()
  24. done()

出题,你能画出如下的风车吗?

画个龙卷风

  1. from turtle import *
  2. # 龙卷风
  3. setup(800,600)
  4. pensize(1)
  5. speed(6)
  6. colors=['green','red','yellow','grey','orange','blue','pink','purple']
  7. bgcolor('black')
  8. for i in range(1,10):
  9. pencolor(colors[i%8])
  10. penup()
  11. goto(5*i,0)
  12. pendown()
  13. circle(10*i)
  14. done()

 

同心圆(箭靶)

  1. # 同心圆
  2. from turtle import *
  3. setup(800, 600, 450, 50)
  4. pensize(5)
  5. bgcolor('white')
  6. speed('fastest')
  7. colors = ['blue', 'yellow', 'red', 'green', 'white', 'black', 'orange', 'grey']
  8. for i in range(10, 1, -1):
  9. penup()
  10. goto(0, -20 * i)
  11. pendown()
  12. begin_fill()
  13. fillcolor(colors[i % 4])
  14. circle(20 * i)
  15. end_fill()
  16. hideturtle()
  17. done()

turtle主要函数介绍

绝对坐标

海龟初始位置为(0,0),位于画布中央。

海龟默认朝向右侧。(在turtle模块中,可使用setheading()函数(可简写为seth)用于设置海龟的朝向。它的作用是设置海龟当前的前进方向,参数是一个0-360之间的整数,表示海龟的朝向角度。例如setheading(90)将使海龟朝向上方,seth(180)将使朝向指向左方。

行进函数

turtle.goto(x,y,从当前位置到达任何位置(X,Y)。

海龟无论何处,面对的方向是前进方向。

前进函数:turtle.fd(),向前移动指定的距离。

后退函数:turtle.bk(),向后移动指定的距离。

画弧函数:turtle.circle(r, angle) 以左侧r像素处为圆心,逆时针旋转angle的角度。

朝向函数:turtle.seth(angle)朝向绝对方向angle。(海龟默认朝向右侧,设置90,则逆时针转向指向正上方,设置为180则将使朝向指向左侧。)

right()和left()函数用于设置海龟的转向角度。

right(angle)函数用于将海龟向右旋转指定的角度。参数angle是一个整数,表示海龟要旋转的角度。例如,right(90)将使海龟向右旋转90度。

left(angle)函数用于将海龟向左旋转指定的角度。参数angle是一个整数,表示海龟要旋转的角度。例如left(90)将使海龟向左旋转90度。 这两个函数可以用于控制海龟的行走方向和绘制图形的方向。在使用这两个函数时,需要注意它们设置的是海龟的相对转向角度,而不是绝对转向角度。也就是说,调用right()函数后,海龟的面向方向会向右旋转,而调用left()函数后,海龟的面向方向会向左旋转。

turtle.penup()      画笔抬起

turtle.pendown()  画笔落下

turtle.pensize()    海龟腰围

turtle.pencolor()  画笔颜色

turtle.speed() 设置移动速度,其中的参数值表示海龟的速度等级,取值范围为[0, 10],注意其中0也是表示最快的速度,1则是最慢,10也是表示最快的速度,默认速度应该是5(normal)。

  • 如果输入的数字大于10或小于0.5,则速度设置为0。
  • 速度字符串通过以下方式映射到速度值:
    • ‘fastest’:0
    • ‘fast’:10
    • ‘normal’:6
    • ‘slow’:3
    • ‘slowest’:1

turtle.home() 返回原点(0,0)位置(屏幕正中央),朝向右。

绘制复杂的图形

注:部分资源引用自《Python创意编程100例turtle篇》。如有侵权请告知删除。

美丽的树

  1. from turtle import *
  2. # 设置色彩模式是RGB:
  3. colormode(255)
  4. lt(90)
  5. lv = 14
  6. l = 120
  7. s = 45
  8. width(lv)
  9. # 初始化RGB颜色:
  10. r = 0
  11. g = 0
  12. b = 0
  13. pencolor(r, g, b)
  14. penup()
  15. bk(l)
  16. pendown()
  17. fd(l)
  18. def draw_tree(l, level):
  19. global r, g, b
  20. # save the current pen width
  21. w = width()
  22. # narrow the pen width
  23. width(w * 3.0 / 4.0)
  24. # set color:
  25. r = r + 1
  26. g = g + 2
  27. b = b + 3
  28. pencolor(r % 200, g % 200, b % 200)
  29. l = 3.0 / 4.0 * l
  30. lt(s)
  31. fd(l)
  32. if level < lv:
  33. draw_tree(l, level + 1)
  34. bk(l)
  35. rt(2 * s)
  36. fd(l)
  37. if level < lv:
  38. draw_tree(l, level + 1)
  39. bk(l)
  40. lt(s)
  41. # restore the previous pen width
  42. width(w)
  43. speed("fastest")
  44. draw_tree(l, 4)
  45. done()

彩色大蟒蛇

  1. import turtle
  2. turtle.setup(650, 350,200,200)
  3. turtle.penup()
  4. turtle.fd(-250)
  5. turtle.pendown()
  6. turtle.pensize(25)
  7. colors=['green','blue','yellow','orange','pink','purple']
  8. turtle.seth(-40)
  9. for i in range(4):
  10. turtle.color(colors[i])#选择索引从0~3的颜色
  11. turtle.circle(40, 80)#上半弧度
  12. turtle.circle(-40, 80)#下半弧度
  13. turtle.color(colors[5])
  14. turtle.circle(40, 80/2)
  15. turtle.fd(40)
  16. turtle.circle(16, 180)
  17. turtle.fd(40 * 2/3)
  18. turtle.done()

画小猪佩奇

  1. # coding=utf-8
  2. import turtle as t
  3. t.pensize(4)
  4. t.hideturtle()
  5. t.colormode(255)
  6. t.color((255, 155, 192), "pink")
  7. t.setup(840, 500)
  8. t.speed(10)
  9. # 鼻子
  10. t.pu()
  11. t.goto(-100, 100)
  12. t.pd()
  13. t.seth(-30)
  14. t.begin_fill()
  15. a = 0.4
  16. for i in range(120):
  17. if 0 <= i < 30 or 60 <= i < 90:
  18. a = a + 0.08
  19. t.lt(3) # 向左转3度
  20. t.fd(a) # 向前走a的步长
  21. else:
  22. a = a - 0.08
  23. t.lt(3)
  24. t.fd(a)
  25. t.end_fill()
  26. t.pu()
  27. t.seth(90)
  28. t.fd(25)
  29. t.seth(0)
  30. t.fd(10)
  31. t.pd()
  32. t.pencolor(255, 155, 192)
  33. t.seth(10)
  34. t.begin_fill()
  35. t.circle(5)
  36. t.color(160, 82, 45)
  37. t.end_fill()
  38. t.pu()
  39. t.seth(0)
  40. t.fd(20)
  41. t.pd()
  42. t.pencolor(255, 155, 192)
  43. t.seth(10)
  44. t.begin_fill()
  45. t.circle(5)
  46. t.color(160, 82, 45)
  47. t.end_fill()
  48. # 头
  49. t.color((255, 155, 192), "pink")
  50. t.pu()
  51. t.seth(90)
  52. t.fd(41)
  53. t.seth(0)
  54. t.fd(0)
  55. t.pd()
  56. t.begin_fill()
  57. t.seth(180)
  58. t.circle(300, -30)
  59. t.circle(100, -60)
  60. t.circle(80, -100)
  61. t.circle(150, -20)
  62. t.circle(60, -95)
  63. t.seth(161)
  64. t.circle(-300, 15)
  65. t.pu()
  66. t.goto(-100, 100)
  67. t.pd()
  68. t.seth(-30)
  69. a = 0.4
  70. for i in range(60):
  71. if 0 <= i < 30 or 60 <= i < 90:
  72. a = a + 0.08
  73. t.lt(3) # 向左转3度
  74. t.fd(a) # 向前走a的步长
  75. else:
  76. a = a - 0.08
  77. t.lt(3)
  78. t.fd(a)
  79. t.end_fill()
  80. # 耳朵
  81. t.color((255, 155, 192), "pink")
  82. t.pu()
  83. t.seth(90)
  84. t.fd(-7)
  85. t.seth(0)
  86. t.fd(70)
  87. t.pd()
  88. t.begin_fill()
  89. t.seth(100)
  90. t.circle(-50, 50)
  91. t.circle(-10, 120)
  92. t.circle(-50, 54)
  93. t.end_fill()
  94. t.pu()
  95. t.seth(90)
  96. t.fd(-12)
  97. t.seth(0)
  98. t.fd(30)
  99. t.pd()
  100. t.begin_fill()
  101. t.seth(100)
  102. t.circle(-50, 50)
  103. t.circle(-10, 120)
  104. t.circle(-50, 56)
  105. t.end_fill()
  106. # 眼睛
  107. t.color((255, 155, 192), "white")
  108. t.pu()
  109. t.seth(90)
  110. t.fd(-20)
  111. t.seth(0)
  112. t.fd(-95)
  113. t.pd()
  114. t.begin_fill()
  115. t.circle(15)
  116. t.end_fill()
  117. t.color("black")
  118. t.pu()
  119. t.seth(90)
  120. t.fd(12)
  121. t.seth(0)
  122. t.fd(-3)
  123. t.pd()
  124. t.begin_fill()
  125. t.circle(3)
  126. t.end_fill()
  127. t.color((255, 155, 192), "white")
  128. t.pu()
  129. t.seth(90)
  130. t.fd(-25)
  131. t.seth(0)
  132. t.fd(40)
  133. t.pd()
  134. t.begin_fill()
  135. t.circle(15)
  136. t.end_fill()
  137. t.color("black")
  138. t.pu()
  139. t.seth(90)
  140. t.fd(12)
  141. t.seth(0)
  142. t.fd(-3)
  143. t.pd()
  144. t.begin_fill()
  145. t.circle(3)
  146. t.end_fill()
  147. # 腮
  148. t.color((255, 155, 192))
  149. t.pu()
  150. t.seth(90)
  151. t.fd(-95)
  152. t.seth(0)
  153. t.fd(65)
  154. t.pd()
  155. t.begin_fill()
  156. t.circle(30)
  157. t.end_fill()
  158. # 嘴
  159. t.color(239, 69, 19)
  160. t.pu()
  161. t.seth(90)
  162. t.fd(15)
  163. t.seth(0)
  164. t.fd(-100)
  165. t.pd()
  166. t.seth(-80)
  167. t.circle(30, 40)
  168. t.circle(40, 80)
  169. # 身体
  170. t.color("red", (255, 99, 71))
  171. t.pu()
  172. t.seth(90)
  173. t.fd(-20)
  174. t.seth(0)
  175. t.fd(-78)
  176. t.pd()
  177. t.begin_fill()
  178. t.seth(-130)
  179. t.circle(100, 10)
  180. t.circle(300, 30)
  181. t.seth(0)
  182. t.fd(230)
  183. t.seth(90)
  184. t.circle(300, 30)
  185. t.circle(100, 3)
  186. t.color((255, 155, 192), (255, 100, 100))
  187. t.seth(-135)
  188. t.circle(-80, 63)
  189. t.circle(-150, 24)
  190. t.end_fill()
  191. # 手
  192. t.color((255, 155, 192))
  193. t.pu()
  194. t.seth(90)
  195. t.fd(-40)
  196. t.seth(0)
  197. t.fd(-27)
  198. t.pd()
  199. t.seth(-160)
  200. t.circle(300, 15)
  201. t.pu()
  202. t.seth(90)
  203. t.fd(15)
  204. t.seth(0)
  205. t.fd(0)
  206. t.pd()
  207. t.seth(-10)
  208. t.circle(-20, 90)
  209. t.pu()
  210. t.seth(90)
  211. t.fd(30)
  212. t.seth(0)
  213. t.fd(237)
  214. t.pd()
  215. t.seth(-20)
  216. t.circle(-300, 15)
  217. t.pu()
  218. t.seth(90)
  219. t.fd(20)
  220. t.seth(0)
  221. t.fd(0)
  222. t.pd()
  223. t.seth(-170)
  224. t.circle(20, 90)
  225. # 脚
  226. t.pensize(10)
  227. t.color((240, 128, 128))
  228. t.pu()
  229. t.seth(90)
  230. t.fd(-75)
  231. t.seth(0)
  232. t.fd(-180)
  233. t.pd()
  234. t.seth(-90)
  235. t.fd(40)
  236. t.seth(-180)
  237. t.color("black")
  238. t.pensize(15)
  239. t.fd(20)
  240. t.pensize(10)
  241. t.color((240, 128, 128))
  242. t.pu()
  243. t.seth(90)
  244. t.fd(40)
  245. t.seth(0)
  246. t.fd(90)
  247. t.pd()
  248. t.seth(-90)
  249. t.fd(40)
  250. t.seth(-180)
  251. t.color("black")
  252. t.pensize(15)
  253. t.fd(20)
  254. # 尾巴
  255. t.pensize(4)
  256. t.color((255, 155, 192))
  257. t.pu()
  258. t.seth(90)
  259. t.fd(70)
  260. t.seth(0)
  261. t.fd(95)
  262. t.pd()
  263. t.seth(0)
  264. t.circle(70, 20)
  265. t.circle(10, 330)
  266. t.circle(70, 30)
  267. t.done()

画钟表

  1. # -*- coding:utf-8 –*-
  2. # 用turtlr画时钟
  3. # 以自定义shape的方式实现
  4. import turtle as t
  5. import datetime as d
  6. def skip(step): # 抬笔,跳到一个地方
  7. t.penup()
  8. t.forward(step)
  9. t.pendown()
  10. def drawClock(radius): # 画表盘
  11. t.speed(0)
  12. t.mode("logo") # 以Logo坐标、角度方式
  13. t.hideturtle()
  14. t.pensize(7)
  15. t.home() # 回到圆点
  16. for j in range(60):
  17. skip(radius)
  18. if (j % 5 == 0):
  19. t.forward(20)
  20. skip(-radius - 20)
  21. else:
  22. t.dot(5)
  23. skip(-radius)
  24. t.right(6)
  25. def makePoint(pointName, len): # 钟的指针,时针、分针、秒针
  26. t.penup()
  27. t.home()
  28. t.begin_poly()
  29. t.back(0.1 * len)
  30. t.forward(len * 1.1)
  31. t.end_poly()
  32. poly = t.get_poly()
  33. t.register_shape(pointName, poly) # 注册为一个shape
  34. def drawPoint(): # 画指针
  35. global hourPoint, minPoint, secPoint, fontWriter
  36. makePoint("hourPoint", 100)
  37. makePoint("minPoint", 120)
  38. makePoint("secPoint", 140)
  39. hourPoint = t.Pen() # 每个指针是一只新turtle
  40. hourPoint.shape("hourPoint")
  41. hourPoint.shapesize(1, 1, 6)
  42. minPoint = t.Pen()
  43. minPoint.shape("minPoint")
  44. minPoint.shapesize(1, 1, 4)
  45. secPoint = t.Pen()
  46. secPoint.shape("secPoint")
  47. secPoint.pencolor('red')
  48. fontWriter = t.Pen()
  49. fontWriter.pencolor('gray')
  50. fontWriter.hideturtle()
  51. def getWeekName(weekday):
  52. weekName = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日']
  53. return weekName[weekday]
  54. def getDate(year, month, day):
  55. return "%s-%s-%s" % (year, month, day)
  56. def realTime():
  57. curr = d.datetime.now()
  58. curr_year = curr.year
  59. curr_month = curr.month
  60. curr_day = curr.day
  61. curr_hour = curr.hour
  62. curr_minute = curr.minute
  63. curr_second = curr.second
  64. curr_weekday = curr.weekday()
  65. t.tracer(False)
  66. secPoint.setheading(360 / 60 * curr_second)
  67. minPoint.setheading(360 / 60 * curr_minute)
  68. hourPoint.setheading(360 / 12 * curr_hour + 30 / 60 * curr_minute)
  69. fontWriter.clear()
  70. fontWriter.home()
  71. fontWriter.penup()
  72. fontWriter.forward(80)
  73. # 用turtle写文字
  74. fontWriter.write(getWeekName(curr_weekday), align="center", font=("Courier", 14, "bold"))
  75. fontWriter.forward(-160)
  76. fontWriter.write(getDate(curr_year, curr_month, curr_day), align="center", font=("Courier", 14, "bold"))
  77. t.tracer(True)
  78. print(curr_second)
  79. t.ontimer(realTime, 100) # 每隔100毫秒调用一次realTime()
  80. def main():
  81. t.tracer(False)
  82. drawClock(160)
  83. drawPoint()
  84. realTime()
  85. t.tracer(True)
  86. t.mainloop()
  87. if __name__ == '__main__':
  88. main()

画狮子头 

  1. import turtle as t
  2. def hair(): # 画头发
  3. t.penup()
  4. t.goto(-50, 150)
  5. t.pendown()
  6. t.fillcolor('#a2774d')
  7. t.begin_fill()
  8. for j in range(10): # 重复执行10次
  9. t.setheading(60 - (j * 36)) # 每次调整初始角度
  10. t.circle(-50, 120) # 画120度的弧
  11. t.end_fill()
  12. def face(): # 画脸
  13. t.penup()
  14. t.goto(0, 100)
  15. t.pendown()
  16. t.fillcolor('#f2ae20')
  17. t.begin_fill()
  18. t.setheading(180)
  19. t.circle(85)
  20. t.end_fill()
  21. # 下巴
  22. t.circle(85, 120)
  23. t.fillcolor('white')
  24. t.begin_fill()
  25. t.circle(85, 120)
  26. t.setheading(135)
  27. t.circle(100, 95)
  28. t.end_fill()
  29. def ears(dir): # 画眼睛,dir用来设置方向,左右眼对称
  30. t.penup()
  31. t.goto((0 - dir) * 30, 90)
  32. t.setheading(90)
  33. t.pendown()
  34. t.fillcolor('#f2ae20')
  35. t.begin_fill()
  36. t.circle(dir * 30)
  37. t.end_fill()
  38. t.penup()
  39. t.goto((0 - dir) * 40, 85)
  40. t.setheading(90)
  41. t.pendown()
  42. t.fillcolor('white')
  43. t.begin_fill()
  44. t.circle(dir * 17)
  45. t.end_fill()
  46. def nose(): # 画鼻子
  47. t.penup()
  48. t.goto(20, 0)
  49. t.setheading(90)
  50. t.pendown()
  51. t.fillcolor('#a2774d')
  52. t.begin_fill()
  53. t.circle(20)
  54. t.end_fill()
  55. def eye(dir): # 画耳朵,dir用来设置方向,左右耳对称
  56. t.penup()
  57. t.goto((0 - dir) * 30, 20)
  58. t.setheading(0)
  59. t.pendown()
  60. t.fillcolor('black')
  61. t.begin_fill()
  62. t.circle(10)
  63. t.end_fill()
  64. def mouth(): # 画嘴巴
  65. t.penup()
  66. t.goto(0, 0)
  67. t.setheading(-90)
  68. t.pendown()
  69. t.forward(50)
  70. t.setheading(0)
  71. t.circle(80, 30)
  72. t.penup()
  73. t.goto(0, -50)
  74. t.setheading(180)
  75. t.pendown()
  76. t.circle(-80, 30)
  77. hair()
  78. ears(1)
  79. ears(-1)
  80. face()
  81. eye(1)
  82. eye(-1)
  83. mouth()
  84. nose()
  85. t.done()

画朵小红花

  1. import turtle as t
  2. t.speed(0)
  3. #花柄
  4. t.penup()
  5. t.goto(0,-150)
  6. t.pendown()
  7. t.pensize(2)
  8. t.setheading(90)
  9. t.color('brown')
  10. t.fd(300)
  11. #花瓣
  12. t.pensize(1)
  13. t.color('black','red')
  14. t.begin_fill()
  15. for i in range(10):
  16. t.left(45)
  17. t.circle(80,60)
  18. t.left(120)
  19. t.circle(80,60)
  20. t.end_fill()
  21. #叶子
  22. for i in range(2):
  23. t.penup()
  24. t.goto(0,10-50*i)
  25. x=20+80*i
  26. t.setheading(x)
  27. t.pendown()
  28. t.color('brown','green')
  29. t.begin_fill()
  30. t.circle(60,60)
  31. t.left(120)
  32. t.circle(60,60)
  33. t.end_fill()
  34. t.hideturtle()

浪漫樱花

  1. from turtle import *
  2. from random import *
  3. from math import *
  4. def tree(n, l):
  5. pd () # 下笔
  6. # 阴影效果
  7. t = cos ( radians ( heading () + 45 ) ) / 8 + 0.25
  8. pencolor ( t, t, t )
  9. pensize ( n / 3 )
  10. forward ( l ) # 画树枝
  11. if n > 0:
  12. b = random () * 15 + 10 # 右分支偏转角度
  13. c = random () * 15 + 10 # 左分支偏转角度
  14. d = l * (random () * 0.25 + 0.7) # 下一个分支的长度
  15. # 右转一定角度,画右分支
  16. right ( b )
  17. tree ( n - 1, d )
  18. # 左转一定角度,画左分支
  19. left ( b + c )
  20. tree ( n - 1, d )
  21. # 转回来
  22. right ( c )
  23. else:
  24. # 画叶子
  25. right ( 90 )
  26. n = cos ( radians ( heading () - 45 ) ) / 4 + 0.5
  27. ran = random ()
  28. # 这里相比于原来随机添加了填充的圆圈,让樱花叶子看起来更多一点
  29. if (ran > 0.7):
  30. begin_fill ()
  31. circle ( 3 )
  32. fillcolor ( 'pink' )
  33. # 把原来随机生成的叶子换成了统一的粉色
  34. pencolor ( "pink" )
  35. circle ( 3 )
  36. if (ran > 0.7):
  37. end_fill ()
  38. left ( 90 )
  39. # 添加0.3倍的飘落叶子
  40. if (random () > 0.7):
  41. pu ()
  42. # 飘落
  43. t = heading ()
  44. an = -40 + random () * 40
  45. setheading ( an )
  46. dis = int ( 800 * random () * 0.5 + 400 * random () * 0.3 + 200 * random () * 0.2 )
  47. forward ( dis )
  48. setheading ( t )
  49. # 画叶子
  50. pd ()
  51. right ( 90 )
  52. n = cos ( radians ( heading () - 45 ) ) / 4 + 0.5
  53. pencolor ( n * 0.5 + 0.5, 0.4 + n * 0.4, 0.4 + n * 0.4 )
  54. circle ( 2 )
  55. left ( 90 )
  56. pu ()
  57. # 返回
  58. t = heading ()
  59. setheading ( an )
  60. backward ( dis )
  61. setheading ( t )
  62. pu ()
  63. backward ( l ) # 退回
  64. bgcolor ( 0.956, 0.9255, 0.9882 ) # 设置背景色(把灰色换成淡紫色)
  65. ht () # 隐藏turtle
  66. speed ( 0 ) # 速度 1-10渐进,0 最快
  67. tracer ( 0, 0 )
  68. pu () # 抬笔
  69. backward ( 50 )
  70. left ( 90 ) # 左转90度
  71. pu () # 抬笔
  72. backward ( 300 ) # 后退300
  73. tree ( 12, 100 ) # 递归7层
  74. done ()

引用出处 

海龟绘图 - 廖雪峰的官方网站

python---turtle库(详解)_python turtle_超越ct的博客-CSDN博客

python: turtle绘制有趣的小图像合集_turtle画图作品-CSDN博客

Python Turtle 画图:黑洞里的繁星(附源代码)_turtle绘图代码-CSDN博客

Python海龟turtle基础知识大全与画图集合_python海龟编程代码大全-CSDN博客

Python — — turtle 常用代码_python海龟编程代码大全-CSDN博客

Python海龟画图集合_香自寒来-华为云开发者联盟

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/116965
推荐阅读
相关标签
  

闽ICP备14008679号