700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 【Python入门】Turtle海龟库:利用海龟画笔交互绘制字符旋涡

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

时间:2021-12-11 08:31:24

相关推荐

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

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

功能要求

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

实例代码

import turtlet = 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次后结束程序,画出一个有姓名组成的旋涡状图形。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。