目录
前言:一、画一个N边形二、画五角星三、一闪一闪亮晶晶前言:
Python 中的画图工具——turtle(海龟绘图),turtle 是 Python 中自带的绘图模块,最初来自于 Wally Feurzeig, Seymour Papert 和 Cynthia Solomon 于 1967 年所创造的 Logo 编程语言。
使用 turtle 控制画笔在画板上画画。而这个画笔是有形状的,默认是一个小箭头,我们可以使用 turtle.shape("turtle") 将其设成一个小海龟。除了变成小海龟外,还支持传入 "arrow"(箭头),"circle"(圆),"square"(正方形),"triangle"(三角形)和 "classic"(经典).
画笔的颜色默认是黑色的,我们可以使用turtle.color("red")
改成红色的。当然,你也可以使用 turtle.color("yellow") 改成黄色,使用 turtle.color("pink") 改成粉色等等。
一、画一个N边形
import turtle turtle.color("red") #将画笔颜色设置成红色 turtle.hideturtle() #隐藏小海龟 #画一个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.color("red") # 画笔颜色和填充颜色都设为红色 turtle.hideturtle() #隐藏小海龟 turtle.begin_fill() #开始填充 for i in range(5): turtle.forward(100)#向前走100像素 turtle.right(144) #右转144度 turtle.end_fill() #结束填充
打印出结果其实上图五角星不在画板中央,我们将它移动到画板中央
注意:(-50, 20) 只是针对边长 100 像素的五角星,不要随意修改边长。
import turtle turtle.color("red") turtle.hideturtle() turtle.penup() turtle.goto(-50,20) turtle.pendown() turtle.begin_fill() for i in range(5): turtle.forward(100) turtle.right(144) turtle.end_fill() turtle.done()
三、一闪一闪亮晶晶
我们来画一堆星星,实现“一闪一闪亮晶晶,满天都是小星星”的效果~✨
因为画的星星比较多,我们先把之前画五角星的代码封装成一个函数:
import turtle def draw_star(): turtle.color("white") turtle.hideturtle() turtle.begin_fill() for i in range(5): turtle.forward(10) turtle.right(144) turtle.end_fill()
星星的光是白色的,因此我将颜色设置成了白色(white
)。并且,因为是小星星,我将边长设成了 10 像素。画一个小星星的方法搞定了,接下来是画满天星,就画 50 个吧!
满天星的位置都是随机的,我们需要用到 random 模块生成随机位置。因为教学环境中显示区域有限,随机位置在 x 轴上的范围是 -150 到 150,在 y 轴上的范围是 -100 到 100。
随机画 50 颗小星星的代码如下:
import turtle from random import randint def draw_star(): turtle.color("white") turtle.hideturtle() turtle.begin_fill() for i in range(5): turtle.forward(10) turtle.right(144) turtle.end_fill() for i in range(50): turtle.speed(0) # 最快速 turtle.penup() x = randint(-150, 150) # x 轴 y = randint(-100, 100) # y 轴 turtle.goto(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 参数是个元组,其中第一个是字体,第二个是字体大小,最后一个是字重。
为了让文字更清晰可见,我将字体设置成了黑体!12 像素!加粗!完整的代码如下:
import turtle from random import randint def draw_star(): # 补全画一颗星星的代码 turtle.color("red") turtle.hideturtle() turtle.begin_fill() for i in range(5): turtle.forward(10) turtle.right(144) turtle.end_fill() # 将 ??? 改成你想画的星星个数 for i in range(50): turtle.speed(0) turtle.penup() x = randint(-150, 150) y = randint(-100, 100) turtle.goto(x, y) turtle.pendown() draw_star() turtle.penup() turtle.goto(0, -130) turtle.pendown() turtle.write("一闪一闪亮晶晶", font = ("SimHei", 12, "bold")) turtle.done()
最终结果:
下一篇:python灰色预测法的具体使用
X 关闭
X 关闭
- 15G资费不大降!三大运营商谁提供的5G网速最快?中国信通院给出答案
- 2联想拯救者Y70发布最新预告:售价2970元起 迄今最便宜的骁龙8+旗舰
- 3亚马逊开始大规模推广掌纹支付技术 顾客可使用“挥手付”结账
- 4现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 5如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 6AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 7转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 8充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 9好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 10名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?