Mayx's Home Page https://mabbs.github.io
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

83 lines
2.9 KiB

  1. ---
  2. layout: post
  3. title: Python学习笔记 - Turtle
  4. tags: [Python, 学习笔记, Turtle, Logo, Tkinter]
  5. ---
  6. 没想到我终有一天也得学Python了……<!--more-->
  7. # 第一课!Turtle
  8. 我以为我们老师会从Python的基本语法开始教起,不过事实证明我想错了,我们老师打算把我们当做小学生看,然后教 ~~Logo语言~~ 类似Logo语言的Python库,Turtle。
  9. Turtle貌似是基于Tkinter的库,Ubuntu上带的Python默认没有装Tkinter,结果我还得自己装一下……
  10. 老师给我们布置了两个作业,一个是画一个心形,另外是画一个正方形。在开始之前,我也想的这个库就是个Logo语言,也没想着在网上看看这个东西支持什么方法,画正方形也很简单,就是向前向左……执行4遍。很快,我就用循环写出了这个东西:
  11. ```python
  12. import turtle
  13. i=0
  14. while i<4 :
  15. turtle.forward(50)
  16. turtle.left(90)
  17. i=i+1
  18. ```
  19. 看着这段代码,让我回想起了我的小学时光 ~~(一段不堪回首的往事23333)~~ 既然能画出正方形,那么圆也很简单了,我们可以把圆看成一个无限多边形,那么画圆我们可以这样:
  20. ```python
  21. import turtle
  22. i=0
  23. while i<360 :
  24. turtle.forward(2)
  25. turtle.left(1)
  26. i=i+1
  27. ```
  28. 画完圆之后我又打算画心形,不过老师布置的是在终端中显示心形,就像这样:
  29. ```python
  30. print(""" ** **
  31. * * *
  32. * *
  33. * *
  34. *""")
  35. ```
  36. 不过这个感觉没什么意思,我想我可以试试在Turtle里画一个心形。在画之前,当然应该上网查一下Turtle还有什么用法,结果一查以后我就自闭了……画正多边形根本不用一步一步走,有一个叫做circle的方法可以直接实现,比如画正方形可以这样:
  37. ```python
  38. import turtle
  39. turtle.right(45)
  40. turtle.circle(100,360,4)
  41. ```
  42. ……这可真是令人难受……不管了,我先画个心形吧,我捡起了我曾经的三角函数的知识,算了一下我要转的角度和长度,最终写出了这样的东西:
  43. ```python
  44. import turtle
  45. turtle.color('red','red')
  46. turtle.filling()
  47. turtle.begin_fill()
  48. turtle.left(90)
  49. turtle.circle(50,180,180)
  50. turtle.left(30)
  51. turtle.forward(200)
  52. turtle.left(120)
  53. turtle.forward(200)
  54. turtle.left(30)
  55. turtle.circle(50,180,180)
  56. turtle.end_fill()
  57. input()
  58. ```
  59. 当然,我不知道心形的定义是什么,所以也不知道心形是怎么组成的,我想象的大概就是两个半圆和一对等腰拼出来的吧,不过最终画出来的心形是真的丑……
  60. 最后我在网上又查了一下其他人写的,然后继续自闭……
  61. 其他人的心形:
  62. ```python
  63. from turtle import *
  64. def curvemove():
  65. for i in range(200):
  66. right(1)
  67. forward(1)
  68. color('red','pink')
  69. begin_fill()
  70. left(140)
  71. forward(111.65)
  72. curvemove()
  73. left(120)
  74. curvemove()
  75. forward(111.65)
  76. end_fill()
  77. done()
  78. ```
  79. # 总结
  80. 虽然我不喜欢看文档,但是遇到新的东西还是查一下比较稳妥啊!

Powered by TurnKey Linux.