这是风火轮编程Python初级教程的第12课,下面是用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 =""" 在编程的过程中,我们经常需要重复一些语句的执行。 这个时候就要用到循环控制结构。在Python中主要有 for循环和while循环能重复一些语句的执行。本课主 要学习的内容就是for循环。然后通过做练习对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、print命令的end参数 2、for循环语法 3、遍历序列 4、求自然数的和 5、求100以内3的倍数和 6、练习与作业 """ 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、print命令的end参数 我们学习过print命令,它有一个叫sep的参数。这是指定分隔符号的。 print命令还有一个叫end的参数,它是用来指定结束符号的。 其实print命令默认的结束符号为换行符。所以print()这样的语句 就是打印一个换行。而print(32,end='Py')则会打印32Py。 像print('a','b',sep='#',end='c') 则会打印a#bc。 """ 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、for循环语法 for循环的语法如下所示: for 变量 in 序列: 语句组 在for循环的语法中,变量的名称是自己取的,序列则是元组、 列表、字符串、range。for循环中序列后面的冒号是必不可少 的。语句组中的每一条语句相对于for的缩进要一样。 如果语句组只有一条语句,则可以放在冒号后面。 for循环的本质是逐个访问序列中的数据并赋值给变量, 然后就执行一次语句组,直到所有数据访问完毕或执行相关命令强制退出。 如下面的for循环会依次打印range命令所产生的每个数据。 for n in range(10): print(n,end=',') 这个for循环中的n会依次得到从0到9的数字,每得到一次就会打印一次自己, 所以这个for循环中的print语句执行了10次。 """ 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、遍历序列 用for循环逐个访问序列中的每一个数据叫遍历序列。其实, 我们刚才遍历了range序列。当然也可以遍历字符串、元组及列表。 下面的程序遍历了一个字符串。 for char in '风火轮编程': print(char,end='') 下面的程序打印列表中的每个数据。 for n in [32,76,8]: print(n,end=' ') 下面的程序也是遍历了序列。 numbers = [61,32,76,89] for index in range(len(numbers)): print(numbers[index],end=' ') 下面的程序打印了列表中的颜色单词。 for c in ['red','blue','cyan']: print('这是',end=':') print(c) """ 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、求自然数的和 现在,我们来用for循环来求从1到10的所有自然数的和。 怎么编呢?我们可以首先把这些数字遍历一下。写出下面的代码: for n in range(1,11): print(n) 接下来,我们只要稍微修改程序,把n都累加到一个变量中去就行了。 这个变量用来保存所有自然数的和,把它叫s。程序就变成下面这样了。 s = 0 for n in range(1,11): s = s + n 上面的程序相当于对s进行了累加,累加的数字就是从1到10这些数。 如果还不能理解上面的程序,可以这样来理解,首先, n 是等于1的,那么 s 就等于 0 + 1,结果s的值变成1了,然后 n 变成了2,那么 s 就等于 1 + 2,结果s就变成了3,接着 n 变成了3,那么 s 就等于 3 + 3,结果s的值是6了,依此类推... n 变成了10,那么 s 就等于45 + 10,结果s变成了55。 最后,当for循环结束后,我们应该打印一下s的值。 """ 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、求100以内3的倍数和 要求出100以内所有3的倍数的和的话。首先,需要找个方法, 至少我们能把所有是3的倍数这些数能列出来。 那么如何才能得到这些数据呢,我们可以使用range(3,100,3)。 由于步长为3,所以它产生的所有数据都是3的倍数。 那么程序就较简单了,用for x in range(3,100,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') s6 = """ 6、练习与作业 ★ 用for循环编制程序让海龟前进20个单位打一个直径为10的红点, 如此重复10次。 ★ 用for循环编制程序打印10行星号,每行有10个星号。 ★ 用for循环编制程序让海龟画一个红色的边长为100的正方形。 ★ 用for循环编制程序求100以内(不包括100)的所有偶数的和。 ★ 用for循环编制程序用海龟从上到下每隔10个单位画10条 长度为100的平行线条。 """ def press6(): t.clear() slow_write(t,s6) while not spacekey.down():screen.update() t.clear() t.write(s,align='center',font=ft) screen.onkeypress(press6,'6') 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资源。)