基于Python中的turtle绘画星星和星空
⽬录
前⾔:
⼀、画⼀个N边形
⼆、画五⾓星
三、⼀闪⼀闪亮晶晶
前⾔:
Python 中的画图⼯具——turtle(海龟绘图),turtle 是 Python 中⾃带的绘图模块,最初来⾃于 Wally Feurzeig, Seymour Papert 和 Cynthia Solomon 于 1967 年所创造的 Logo 编程语⾔。
使⽤ turtle 控制画笔在画板上画画。⽽这个画笔是有形状的,默认是⼀个⼩箭头,我们可以使⽤ turtle.shape('turtle') 将其设成⼀个⼩海龟。除了变成⼩海龟外,还⽀持传⼊ 'arrow'(箭头),'circle'(圆),'square'(正⽅形),'triangle'(三⾓形)和'classic'(经典).
画笔的颜⾊默认是⿊⾊的,我们可以使⽤lor('red') 改成红⾊的。当然,你也可以使⽤ lor('yellow') 改成黄⾊,使⽤lor('pink') 改成粉⾊等等。
⼀、画⼀个N边形
import turtle
turtle.hideturtle() #隐藏⼩海龟
python基础代码写字#画⼀个n边形
def draw_polygon(n):
for i in range(n):
turtle.forward(100)
turtle.right(360/n)
draw_polygon(5)    #画⼀个五边形
turtle.done()
⼆、画五⾓星
五⾓星每个⾓的度数都是 36 度,⽤ 180 - 36 得到对应的补⾓为 144 度。
如下图所⽰:
五⾓星的五条线的长度是⼀样的,并且⾓度也⼀样。那么,我们就可以⽤循环来画五⾓星。五⾓星要画 5 条线,因此要循环 5次。每次循环都除了画⼀条线,还要旋转特定的⾓度。从上图可知,每次向右旋转 144 度即可。
所以画五⾓星的代码如下:
import turtle
turtle.hideturtle()  #隐藏⼩海龟
python爬虫实例入门
turtle.begin_fill()  #开始填充
for i in range(5):
turtle.forward(100)#向前⾛100像素
turtle.right(144)  #右转144度intmain怎么读
打印出结果其实上图五⾓星不在画板中央,我们将它移动到画板中央12306数据库设计
注意:(-50, 20) 只是针对边长 100 像素的五⾓星,不要随意修改边长。
import turtle
turtle.hideturtle()
turtle.penup()
<(-50,20)
turtle.pendown()
turtle.begin_fill()
for i in range(5):
turtle.forward(100)
turtle.right(144)
turtle.done()
三、⼀闪⼀闪亮晶晶
我们来画⼀堆星星,实现“⼀闪⼀闪亮晶晶,满天都是⼩星星”的效果~
因为画的星星⽐较多,我们先把之前画五⾓星的代码封装成⼀个函数:
import turtle
def draw_star():
turtle.hideturtle()
turtle.begin_fill()
for i in range(5):
turtle.forward(10)
turtle.right(144)
星星的光是⽩⾊的,因此我将颜⾊设置成了⽩⾊(white)。并且,因为是⼩星星,我将边长设成了 10 像素。画⼀个⼩星星的⽅法搞定了,接下来是画满天星,就画 50 个吧!
mvc是什么病毒
满天星的位置都是随机的,我们需要⽤到 random 模块⽣成随机位置。因为教学环境中显⽰区域有限,随机位置在 x 轴上的范围是 -150 到 150,在 y 轴上的范围是 -100 到 100。
随机画 50 颗⼩星星的代码如下:
import turtle
from random import randint
def draw_star():
turtle.hideturtle()
turtle.begin_fill()
for i in range(5):
turtle.forward(10)
turtle.right(144)
for i in range(50):
turtle.speed(0)  # 最快速
turtle.penup()
x = randint(-150, 150)  # x 轴
y = randint(-100, 100)  # y 轴
<(x, y)
turtle.pendown()
draw_star()
应该注意到了turtle.speed(0)这⾏代码,这是控制绘图速度的。因为画 50 颗⼩星星耗时较久,所以要加快绘图速度。
turtle.speed(0) 的参数是 0-10 的整数,其中 1-10 数字越⼤,绘图速度越快。1 最慢,10 最快,默认是 6。⽽ 0 表⽰没有动画效果,因此 0 ⽐ 10 的速度还要快。
满天星画完了,我们最后再署个名。调⽤turtle.write() 可以在画板上写字,参数为要写的内容。我们还能设置字的字体、⼤⼩等,⽐如 turtle.write('By 黄帮主', font = ('SimHei', 12, 'bold'))。font 参数是个元组,其中第⼀个是字体,第⼆个是字体⼤⼩,最后⼀个是字重。
免费pdf转word网页版为了让⽂字更清晰可见,我将字体设置成了⿊体!12 像素!加粗!完整的代码如下:
import turtle
from random import randint
def draw_star():
# 补全画⼀颗星星的代码
turtle.hideturtle()
turtle.begin_fill()
for i in range(5):
turtle.forward(10)
turtle.right(144)
# 将改成你想画的星星个数
for i in range(50):
turtle.speed(0)
turtle.penup()
x = randint(-150, 150)
y = randint(-100, 100)
<(x, y)
turtle.pendown()
draw_star()
turtle.penup()
<(0, -130)
turtle.pendown()
turtle.write('⼀闪⼀闪亮晶晶',  font = ('SimHei', 12, 'bold')) turtle.done()
最终结果:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。