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.
mabbs/_posts/2019-09-28-python.md

84 lines
2.9 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

---
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()
```
# 总结
虽然我不喜欢看文档,但是遇到新的东西还是查一下比较稳妥啊!