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

功能要求

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

实例代码

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

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

  1. 【Python入门】Turtle海龟库:利用海龟画笔交互绘制一个万花筒

    利用海龟笔绘制一个螺旋线 功能要求 利用海龟笔绘制一个螺旋线 实例代码 import randomimport turtleturtle.bgcolor('pink')t = turtle.Pen() ...

  2. 【Python入门】Turtle海龟库:利用海龟画笔交互绘制笑脸或花朵

    绘制可爱的笑脸 功能要求 使用海龟绘图画可爱的笑脸 说明:笑脸主要由三个圆形和一个弧线组成.笑脸的脸为黄色的圆形,眼睛为两个黑色圆形,嘴为黑色的弧线. 实例代码 import turtlet = tu ...

  3. python类似turtle的库_Python之Turtle库与Time库知识分享

    以下均为干货,更多知识视觉享受请移步微信公众号:  子奇的小屋 认识turtle库: turtle库是turtle绘图体系的Python实现,是标准库之一 标准库:随解释器操作系统中的模块直接安装到解 ...

  4. python类似turtle的库_Python库——turtle

    Python的强大在于简单的结构和一系列强大的库,今天分享一个绘制图形的库--turtle 我们先看两个可以用turtle库实现的图形 这些都是利用turtle中的语句写出来的,接下来作者将为大家介绍 ...

  5. 如何用python的turtle画五角星_海龟编辑器五角星怎么画 绘制五角星就是这么简单...

    海龟编辑器作为一款面向少儿的Python编辑器,它可以让孩子通过图形化的方式学习Python,很多用户在刚开始使用时不知道怎么绘制最基本的图形,小编将绘制五角星的方式通过两种方法进行讲解,想知道的赶快 ...

  6. python入门turtle库简单绘图(螺旋曲线图)

    从入门学习python还是有点时间里,CSDN还是帮了我很多忙,这几天写了几个简单的turtle绘图,哈哈,兴趣所致,所以来分享一下我的三个代码,纯粹原创,不喜勿喷嘛 我用的是VSCODE,个人觉得挺 ...

  7. python入门day12(jieba库下载及其使用)

    1.jieba库的在安装:jieba是python计算生态中非常优秀的中文分词第三方库,因此我们需要进行额外的安装来得到并使用jieba库,windows环境下,我们使用win + R键,然后在对话框 ...

  8. python入门编程题库-Python随笔30:Python基础编程练习题25~26

    注:本文所有代码均经过Python 3.7实际运行检验,保证其严谨性. 注:本文所有代码均经过Python 3.7实际运行检验,保证其严谨性. Python编程 Python基础练习题25:合并两个列 ...

  9. python入门编程题库-Python经典基础编程练习题(六)——每日10题

    1.统计 1 到 100 之和 sum=0 for i in range(1,101): sum+=i print(sum) 2.求输入数字的平方,如果平方运算后小于 50 则退出 n= int(in ...

  10. python动态交互式图表库_干货 | 使用pyecharts绘制交互式动态地图

    干货 | 使用pyecharts绘制交互式动态地图 说到pyecharts,相信很多人不会陌生,一个优秀的python可视化包. pyecharts是中国人开发的,相比较matplotlib.seab ...

最新文章

  1. 管理员信息管理之保存管理员数据
  2. 惠州学院、智能车和我
  3. 北京冬奥一项AI黑科技即将走进大众:实时动捕三维姿态,误差不到5毫米
  4. Selenium之定位浏览器弹窗方法汇总
  5. LeetCode 205 Isomorphic Strings(同构的字符串)(string、vector、map)(*)
  6. 把文件夹下的所有文件打包成一个zip包
  7. disruptor3_发布Disruptor 3.0.0
  8. Mysql更改表名大小写不敏感
  9. 远古VOD存在严重注入漏洞!!
  10. AIX操作系统版本小知识(转载)
  11. (转)李嘉诚:成功源于花90%时间考虑失败
  12. maxscale mysql 主从_使用Maxscale实现mysql读写分离
  13. centos php ioncube_如何在CentOS 7中安装ionCube Loader
  14. Word:一级标题行首段前距失效问题
  15. 关于IT公司技术委员会职责
  16. 信号完整性(SI)电源完整性(PI)学习笔记(十四)有损线、上升边退化与材料特性(一)
  17. 翻译文章“AST 模块:用 Python 修改 Python 代码”---!!注意ironpathyon未实现此功能...
  18. hexo主题之hexo-theme-yilia-plus
  19. 【Unity3D应用案例系列】答题系统开发
  20. Pytorch学习之torch----Reduction Ops

热门文章

  1. WHYZOJ-#116[NOIP模拟] czy把妹(区间DP)
  2. LG-P2342 叠积木
  3. VESA编程——GUI离我们并不遥远
  4. JAVA 中大于等于小于的写法
  5. 如何关闭流氓软件弹窗广告
  6. 排序算法伪代码以及python实现——插入,归并,快速,堆,计数
  7. 令人深思的文章:也许你这辈子都只是个小人物
  8. outlook邮箱备份步骤
  9. Python编程快速上手----让繁琐的工作自动化(1. python编程基础)
  10. Scene Graph Generation by Iterative Message Passing解读