mirror of
				https://github.com/Mabbs/mabbs.github.io
				synced 2025-11-03 20:18:21 +08:00 
			
		
		
		
	Restore deleted repositories
This commit is contained in:
		
							
								
								
									
										83
									
								
								_posts/2019-09-28-python.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								_posts/2019-09-28-python.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,83 @@
 | 
			
		||||
---
 | 
			
		||||
layout: post
 | 
			
		||||
title: Python学习笔记 - Turtle
 | 
			
		||||
tags: [Python, 学习笔记, Turtle, Logo, Tkinter]
 | 
			
		||||
--- 
 | 
			
		||||
 | 
			
		||||
  没想到我终有一天也得学Python了……<!--more-->   
 | 
			
		||||
  
 | 
			
		||||
# 第一课!Turtle
 | 
			
		||||
  我以为我们老师会从Python的基本语法开始教起,不过事实证明我想错了,我们老师打算把我们当做小学生看,然后教 ~~Logo语言~~ 类似Logo语言的Python库,Turtle。   
 | 
			
		||||
  Turtle貌似是基于Tkinter的库,Ubuntu上带的Python默认没有装Tkinter,结果我还得自己装一下……   
 | 
			
		||||
  老师给我们布置了两个作业,一个是画一个心形,另外是画一个正方形。在开始之前,我也想的这个库就是个Logo语言,也没想着在网上看看这个东西支持什么方法,画正方形也很简单,就是向前向左……执行4遍。很快,我就用循环写出了这个东西:
 | 
			
		||||
```python
 | 
			
		||||
import turtle
 | 
			
		||||
i=0
 | 
			
		||||
while i<4 :
 | 
			
		||||
	turtle.forward(50)
 | 
			
		||||
	turtle.left(90)
 | 
			
		||||
	i=i+1
 | 
			
		||||
```
 | 
			
		||||
  看着这段代码,让我回想起了我的小学时光 ~~(一段不堪回首的往事23333)~~ 既然能画出正方形,那么圆也很简单了,我们可以把圆看成一个无限多边形,那么画圆我们可以这样:
 | 
			
		||||
```python
 | 
			
		||||
import turtle
 | 
			
		||||
i=0
 | 
			
		||||
while i<360 :
 | 
			
		||||
	turtle.forward(2)
 | 
			
		||||
	turtle.left(1)
 | 
			
		||||
	i=i+1
 | 
			
		||||
```
 | 
			
		||||
  画完圆之后我又打算画心形,不过老师布置的是在终端中显示心形,就像这样:
 | 
			
		||||
```python
 | 
			
		||||
print(""" ** **
 | 
			
		||||
*  *  *
 | 
			
		||||
 *   *
 | 
			
		||||
  * *
 | 
			
		||||
   *""")
 | 
			
		||||
```
 | 
			
		||||
  不过这个感觉没什么意思,我想我可以试试在Turtle里画一个心形。在画之前,当然应该上网查一下Turtle还有什么用法,结果一查以后我就自闭了……画正多边形根本不用一步一步走,有一个叫做circle的方法可以直接实现,比如画正方形可以这样:
 | 
			
		||||
```python
 | 
			
		||||
import turtle
 | 
			
		||||
turtle.right(45)
 | 
			
		||||
turtle.circle(100,360,4)
 | 
			
		||||
```
 | 
			
		||||
  ……这可真是令人难受……不管了,我先画个心形吧,我捡起了我曾经的三角函数的知识,算了一下我要转的角度和长度,最终写出了这样的东西:
 | 
			
		||||
```python
 | 
			
		||||
import turtle
 | 
			
		||||
turtle.color('red','red')
 | 
			
		||||
turtle.filling()
 | 
			
		||||
turtle.begin_fill()
 | 
			
		||||
turtle.left(90)
 | 
			
		||||
turtle.circle(50,180,180)
 | 
			
		||||
turtle.left(30)
 | 
			
		||||
turtle.forward(200)
 | 
			
		||||
turtle.left(120)
 | 
			
		||||
turtle.forward(200)
 | 
			
		||||
turtle.left(30)
 | 
			
		||||
turtle.circle(50,180,180)
 | 
			
		||||
turtle.end_fill()
 | 
			
		||||
input()
 | 
			
		||||
``` 
 | 
			
		||||
  当然,我不知道心形的定义是什么,所以也不知道心形是怎么组成的,我想象的大概就是两个半圆和一对等腰拼出来的吧,不过最终画出来的心形是真的丑……   
 | 
			
		||||
  最后我在网上又查了一下其他人写的,然后继续自闭……   
 | 
			
		||||
  其他人的心形:
 | 
			
		||||
```python
 | 
			
		||||
from turtle import *
 | 
			
		||||
def curvemove():
 | 
			
		||||
    for i in range(200):
 | 
			
		||||
        right(1)
 | 
			
		||||
        forward(1)
 | 
			
		||||
color('red','pink')        
 | 
			
		||||
begin_fill()
 | 
			
		||||
left(140)
 | 
			
		||||
forward(111.65)
 | 
			
		||||
curvemove()
 | 
			
		||||
left(120)
 | 
			
		||||
curvemove()
 | 
			
		||||
forward(111.65)
 | 
			
		||||
end_fill()
 | 
			
		||||
done()
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
# 总结
 | 
			
		||||
  虽然我不喜欢看文档,但是遇到新的东西还是查一下比较稳妥啊!
 | 
			
		||||
		Reference in New Issue
	
	Block a user