栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【Python入门】Turtle海龟库:利用海龟画笔交互绘制字符旋涡

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Python入门】Turtle海龟库:利用海龟画笔交互绘制字符旋涡

使用海龟绘图制作字符旋涡

功能要求

使用海龟绘图制作字符旋涡,在文本框中输入多个“姓名”,最后以空格结束,形成不同名字不同颜色的字符旋涡

实例代码

import turtle



t = turtle.Pen()

t.speed(0)

t.hideturtle()



turtle.bgcolor('pink')

colors = ['red', 'orange', 'yellow', 'green', 'blue', 'purple', 'white', 'brown']

friend = []



name = turtle.textinput('输入姓名', '请输入姓名或这就按OK按钮结束输入')



while name != '':

    friend.append(name)

    name = turtle.textinput('输入姓名', '请输入姓名或这就按OK按钮结束输入')



for x in range(100):

    t.pencolor(colors[x % len(friend)])

    t.penup()

    t.forward(x * 4)

    t.pendown()

    t.write(friend[x % len(friend)], font=('宋体', int((x + 4) / 4), 'bold'))

    t.right(360 / len(friend) + 2)



turtle.done()

运行结果

 

 

代码分析

t.hideturtle():隐藏小海龟。

turtle.bgcolor('pink'):将画笔背景设置为粉色。

colors = ['red', 'orange', 'yellow', 'green', 'blue', 'purple', 'white', 'brown']:新建一个名为colors的列表,其元素为各种颜色。

friend = []:新建一个名为friend的空列表。

name = turtle.textinput('输入姓名', '请输入姓名或这就按OK按钮结束输入'):新建一个名为name的变量,并将用户输入的信息赋值给变量。turtle.textinput()语句会提供一个输入对话框。对话框的表头为textinput()语句参数中的第一个参数“输入姓名”。对话框中文本框名称为textinput()语句参数中的第二个参数“请输入姓名或这就按OK按钮结束输入”。

while name != '':

    friend.append(name)

    name = turtle.textinput('输入姓名', '请输入姓名或这就按OK按钮结束输入'):while循环部分。让用户可以多次输入信息,并将输入的信息存储到列表friend中。用户可以一直输入信息并按“OK”按钮。如果想结束输入,直接点击“OK”按钮即可推迟对话框。

for x in range(100):

    t.pencolor(colors[x % len(friend)])

    t.penup()

    t.forward(x * 4)

    t.pendown()

    t.write(friend[x % len(friend)], font=('宋体', int((x + 4) / 4), 'bold'))

    t.right(360 / len(friend) + 2):for循环,将列表friend中的元素(即用户输入的信息)绘制成一个旋涡图形。

程序执行过程

1)执行第一行语句,导入海龟绘图模块;执行第二行语句,将变量t设置为海龟的画笔。

2)执行“t.hideturtle()”语句隐藏小海龟;执行“turtle.bgcolor('black')”语句将画布背景设置为黑色。

3)执行“colors = ['red', 'yellow', 'blue', 'green', 'orange', 'purple', 'white', 'brown']”语句,新建一个名为colors的列表,其元素为各种颜色。执行“friend = []”语句,新建一个名为friend的空列表。

4)执行“name = turtle.textinput('输入姓名', '请输入姓名或这就按OK按钮结束输入')”语句,先新建一个变量name,然后生成一个输入对话框,用户通过此对话框输入字符串(姓名)。当用户输入“小明”并单击“OK”按钮后,Python会将用户输入“小明”字符串赋给变量name。

5)执行while循环语句,只要用户之前输入了信息,就会开始循环,将变量name的值添加到列表friend中,然后再次运行输入框,让用户输入信息。只要用户输入信息,就会一直循环,每次循环都将用户输入的内容添加到列表friend中。直到用户没有输入信息,直接单击“OK”按钮,输出一个空字符串才结束循环,关闭输入对话框。注意:如果用户单击“Cancel”按钮,Python会认为用户输入了“None”字符串,并不会结束循环。

6)用户结束输入后,结束while循环,开始执行for循环。此for循环会循环100次才能结束。第1次循环时,for循环先访问range列表中的第一个元素0,并将0存储在变量x中,变量x的值变为0。

7)执行for循环中的缩进部分语句,先执行“t.pencolor(colors[x % len(friend)])”语句,即设置画笔的颜色。语句中“len(friend)”的作用是获取列表friend的长度。当用户输入了6次姓名,所以列表中有6个元素,即列表的长度为6。“x % len(friend)”的意思是求x除以len(friend)的余数。x = 0,len(friend) = 6,所以余数为0。此时“colors[x % len(friend)]”就变为colors[0],即从列表colors中取第一个元素“red”。这样“t.pencolor(colors[x % len(friend)])”就变成了“t.pencolor('red')”,即将画笔的颜色设置为红色。

8)执行“t.penup()”语句,将画笔抬起(即抬笔);执行“t.forward(x * 4)”语句,向前移动0步(第1次循环x = 0)。由于画笔抬起了,因此移动画笔不会画出线段;执行“t.pendown()”语句将画笔落下(即落笔),落笔之后就可以画画了。

9)执行“t.write(friend[x % len(friend)], font=('宋体', int((x + 4) / 4), 'bold'))”语句,此语句作用是向画布写文本。“friend[x % len(friend)]”部分为要写的文本,步骤7)中计算了x % len(friend)的值为0,所以要写文本为列表friend中的第一个元素。即用户输入的第一个名字“小明”。“font=('宋体', int((x + 4) / 4), 'bold')”部分设置所写文本的格式,“int((x + 4) / 4)”为字体大小。int()的作用是将参数设置为整型,int((0 + 4) / 4) = (0 + 4) / 4 = 1。所以字体大小为1。这条语句的意思是将“小明”写在画布上,并设置为宋体、大小设置为1号、加粗。

10)执行“t.right(360 / len(friend) + 2)”语句,词语句中“360 / len(friend) + 2”部分值为360 / 60 + 2 = 62。此语句的意思是将画笔向右旋转62°。

11)进行for循环第二次循环。访问range列表中的第二个元素1,并将1存储在变量x中,变量x的值变为1。接着执行缩进部分的语句,先将画笔的颜色设置为黄色(取列表colors中第二个元素);接着抬笔,将画笔向前移动4步,落笔。然后写文本“小明”(列表friend中的第二个元素,即用户输入的第二个姓名),并将文本设置为宋体、大小为1.25号,加粗;最后将画笔向右旋转62°,结束第二次循环。

12)就这样一直循环,指导for循环完成第100次后结束程序,画出一个有姓名组成的旋涡状图形。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/876662.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号