这是风火轮编程Python初级教程的第13课,下面是用python制作的学习大纲。
用Python制作的幻灯片类型的作品,本课程主要学习Python的嵌套for循环,并且用它画一幅画儿。
我们把它命名为小芽初长成。以下是完整源代码。
本程序需要sprites模块支持,安装方法为在命令提示符下输入以下命令安装:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple sprites –upgrade
""" 第十三课 小芽初长成(嵌套的for循环) """ from sprites import * s = '第十三课 小芽初长成(嵌套的for循环)' screen = Screen() screen.bgcolor('blue') screen.titlebar(False) root = screen._root # 窗口对象 root.wm_attributes('-alpha',0.7) # 设置窗口为全透明(0到1.0) screen.setup(800,800) screen.tracer(0,0) # 下面的代码让窗口可以拖动. oldx = 0 oldy = 0 def startmove(event): global oldx,oldy oldx = event.x oldy = event.y def stopmove(event): global oldx,oldy oldx = 0 oldy = 0 def movewindow(event): global oldx,oldy dx = event.x - oldx dy = event.y - oldy root.move(dx,dy) screen.cv.bind("", startmove) screen.cv.bind(" ", stopmove) screen.cv.bind(" ",movewindow) # 下面的代码按方向箭头则窗口能上下左右移动 screen.onkeypress(lambda:root.move(10),'Right') screen.onkeypress(lambda:root.move(-10),'Left') screen.onkeypress(lambda:root.move(0,-10),'Up') screen.onkeypress(lambda:root.move(0,10),'Down') screen.listen() ft_title = ('楷体',30,'bold') ft_context = ('宋体',18,'normal') t = Sprite(visible=False,pos=(-500,100)) t.color('magenta') clock = Clock() for x in range(100): t.clear() t.write(s,align='center',font=ft_title) t.wait() t.fd(5) clock.tick(60) spacekey = Key('space') # 空格键 m1 = Mouse() # 鼠标左键 while not spacekey.down():screen.update() # 简介 brief =""" 小荷才露尖尖角,早有蜻蜓立上头。这里的小芽初长成是语意双关, 当你能把本课的练习都做完,说明你的编程能力上了一个新台阶。 本课主要是学习如何使用嵌套的for循环。编程也是一门功夫, 只要不断地实践练习,就一定能真正地掌握。观看视频时, 可以先暂停一下,看看自己能不能先做出来? """ if brief!='': # 如果有课程简介,则生成一个角色, ftx = ('宋体',18,'normal') 简介 = Sprite(visible=False,pos=(0,-200)) 简介.color('white') 简介.write(brief,align='center',font=ftx) while spacekey.down():screen.update() while not spacekey.down():screen.update() for x in range(66): # 标题向右消失 t.clear() t.write(s,align='center',font=ft_title) t.fd(10) if brief!='': 简介.clear() 简介.write(brief,align='center',font=ftx) 简介.bk(10) clock.tick(60) 简介.clear() #以下是显示学习的内容段 studycontent = """ 主要学习内容 1、模块的使用方法 2、画并列的三个十字架 3、用海龟画田字 4、用海龟画小芽 5、练习与作业 """ t.color('white') t.clear() t.sety(-260) # 这里修改菜单的显示y坐标 ft = ('楷体',24,'bold') s = studycontent while not spacekey.down():screen.update() # 下面的代码显示主菜单 for x in range(130): t.clear() t.write(s,align='center',font=ft) t.bk(5) clock.tick(60) def slow_write(t,string): """ t:角色,string:要显示的字 本函数慢慢的显示字。 """ string = string.split('\n') # 换成列表 oldxy = t.position() # 记录老的坐标 t.goto(-360,330) # 定位到标题的坐标 # 显示标题,注意string[0]是一个空行 t.write(string[1],font=ft_title) t.addy(-50) for line in string[2:]: # 每一行字 for char in line: # 每一个字符 t.write(char,align='center',font=ft_context) t.wait(0.1) cd = len(bytes(char,'gb2312')) if cd == 1: t.addx(16) else: t.addx(24) t.setx(-360) t.addy(-30) t.goto(oldxy) s1 = """ 1、模块的使用方法 Python自带有很多模块,除了turtle模块,还有time模块。 它提供了一些命令供我们使用。如sleep命令,这是睡眠命令。 导入time模块后就能使用了。方法为time.sleep(1),小括号里 的1是1秒的意思。执行这行代码后,会让程序等待1秒后才执行 下面的代码。 也可以用from time import sleep命令单独导入sleep命令。 这个时候,我们可以直接用sleep(1)来让程序等待1秒了。 同样的道理,海龟模块也提供了一些命令供我们使用,我们也可以 使用如下的命令来导入它们。 from turtle import * 这是从海龟模块导入所有命令的意思。星号代表所有命令。这个时候 需要新建一只海龟,才能进行绘画的编程。使用的命令为Turtle()。 注意第一个字母为大写,下面的命令新建一只名为tom的海龟。 tom = Turtle() 如果要获取屏幕对象可以使用tom.getscreen()。 也可以使用Screen这个命令。它会新建或者返回当前的屏幕。 """ def press1(): t.clear() slow_write(t,s1) while not spacekey.down():screen.update() t.clear() t.write(s,align='center',font=ft) screen.onkeypress(press1,'1') s2 = """ 2、画并列的三个十字架 首先,我们要知道如何画十字架,这里提供一种方法, 先看一下画的过程。一个十字架画好了,那么让海龟 前进一定的距离再画一个十字架,重复3次即可。 以下是画十字架的代码描述: 重复4次 前进100 倒退100 右转90度 """ def press2(): t.clear() slow_write(t,s2) while not spacekey.down():screen.update() t.clear() t.write(s,align='center',font=ft) screen.onkeypress(press2,'2') s3 = """ 3、用海龟画田字 田字由四个正方形组成,在这里我们画田字的方法是先画一个正方形。 然后右转90度,再画一个正方形,如此重复4次就会得到一个田字。 下面看一下画的过程动画。 下面是画正方形的代码描述: 重复4次 前进100 右转90度 """ def press3(): t.clear() slow_write(t,s3) while not spacekey.down():screen.update() t.clear() t.write(s,align='center',font=ft) screen.onkeypress(press3,'3') s4 = """ 4、用海龟画小芽 接下来用海龟来画一个有点像小芽苗一样的图形。首先, 来看一下演示动画。在这个动画中的箭头首先是向上的。 它先往右一边移动一边右转,到最顶上,它的方向变成 了向右,说明它总共旋转了90度。然后它又向右旋转90度。 重复这个过程,这样一去一回,箭头一共旋转了360度。 接下来往左转,画左边部分图形,原理也是一样。 最后倒退100个单位,就把这个图形画完了。 大家可以先画一下,再看视频。 以下是画右半部小芽的代码描述: 重复10次 移动10 右转9度 右转90度 重复10次 移动10 右转9度 右转90度 """ def press4(): t.clear() slow_write(t,s4) while not spacekey.down():screen.update() t.clear() t.write(s,align='center',font=ft) screen.onkeypress(press4,'4') s5 = """ 5、练习与作业 ★ 把所画的十字架及田字程序继续修改为一个漂亮的图形。 ★ 用嵌套的for循环画一排如意金箍棒。 ★ 用嵌套的for循环打印*号,第一行打印一个,第二行打印两 个,第三行打印3个星号,依此类推到第十行打印10个星号。 ★ 用嵌套的for循环打印出1、2、3这三个数字的所有2个数字的 组合。可以是下面这样的: 1 1,1 2,1 3, 2 1,2 2,2 3, 3,1,3 2,3 3, """ def press5(): t.clear() slow_write(t,s5) while not spacekey.down():screen.update() t.clear() t.write(s,align='center',font=ft) screen.onkeypress(press5,'5') byebye = """ 下次再见! """ def pressq(): t.clear() t.color('cyan') t.home() t.write(byebye,align='center',font=('宋体',38,'bold')) while not spacekey.down():screen.update() screen.bye() screen.onkeypress(pressq,'q') screen.mainloop()
以下是付费内容,包括播放视频、python源代码及素材等等。
需要浏览更多吗?
成为会员后,登陆才能继续浏览!联系微信scratch8即可办理会员。
(会员专属:能浏览所有文章,下载所有带链接的Python资源。)