这是风火轮编程Python初级教程的第十一课,下面是用python制作的学习大纲。
用Python制作的幻灯片类型的作品,本课程主要学习如何用python的海龟模块制作漂亮的简单图形。我们把它命名为赤橙黄绿青蓝紫光。以下是完整源代码。
本程序需要sprites模块支持,安装方法为在命令提示符下输入以下命令安装:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple sprites –upgrade
""" 第十一课 序列与range(范围)命令 """ from sprites import * s = '第十一课 序列与range(范围)命令' 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 =""" 本课我们主要学习的内容是序列与可迭代的概念, 还有成员运算符in以及sorted命令。 更重要地是学习range命令,像这些命令的学习, 我们只要多多在IDLE的Shell中实践,就能更快地掌握。 这是为下节课学习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命令的sep参数 2、序列与成员运算符 3、range范围命令 4、sorted排序命令 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、print命令的sep参数 前面我们提及了参数。在print命令中,我们可以用逗号隔开, 从而打印很多数据。这些参数叫位置参数。还有一种参数叫 关键词参数。它们一定要放在位置参数后面。 说到这里,可能有很多人就糊涂了。下面,通过举例来学习。 当我们用print(32,76,8)打印这三个数据的时候,它们默认 以空格符号分隔。如何让它们以逗号或其它符号分隔呢? 这时,可以在这三个数据的后面加上sep参数。 sep是英文separator的前三个字母。表示分隔符的意思。 为了让所打印的数据以逗号分隔, 要这么写:print(32,76,8,sep=',')。假设希望数据用#号分隔, 就这么写:print('a','b',sep='#')。sep='#'叫关键词参数。 它一定要在位置参数后面。并且分隔符不一定是一个字符! 如,print('张','黄','两个是好朋友',sep='乐乐') """ 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、序列与成员运算符 序列的英文为sequence,它包含一些能被逐个访问的数据。 字符串,元组和列表都是序列。它们都是可迭代的, 也就是说它们所包含的数据能一个一个地被访问。 当我们要判断一个数据是否在一个序列中时,可以使用in这个关键词。 它叫成员运算符。它会返回一个逻辑值,即真或者假。 如 'a' in 'abcd' ,这行代码返回真。 当要判断是否不在一个序列中时,用not in。 如'a' not in 'abcd',这行代码返回假。 """ 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、range范围命令 range在英文中是范围的意思。在Python中用它产生整数序列。 为了学好range命令,我们了解下什么是步长,所谓步长就是 序列的后一个数字减去前一个数字的差。如有序列 2,3,4。 那么这个序列的步长就是1。如有序列 2,5,8,它的步长是3。 range命令语法: range(start,stop,step),参数名分别叫 做起始值,结束值,步长。它产生的数字是从start开始到 stop结束,但不包含stop的以步长为增加量的一系列数字。 学习这个命令最好的方法是在IDLE的Shell中多多实践, 用list命令把range能产生的数据列出来,这样直观些容易理解。 如list(range(1,6))则会产生列表[1,2,3,4,5]。 list(range(2,9,3))会产生列表[2,5,8]。 list(range(10,12))会产生列表[10,11]。 最后要说明的是,range命令它只是能产生这些数据, 它并不会真正地产生这些数据。它也属于序列的范畴。 """ 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、sorted排序命令 sorted命令能对序列进行排序,返回一个列表。 如sorted('3dcba2')会返回按字母顺序排序的 ['2', '3', 'a', 'b', 'c', 'd']。 如果参数是一个列表,则要求列表中的数据要么全是数字, 要么全是字符串,否则出错。如,sorted(['32','a','b']), 这样的写法是无法对列表排序的,所以会出错。 """ 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、练习与作业 ★ range('a' in 'abc',6)能产生哪些数据呢? ★ 用range命令产生从3到13(包括13)之间的所有数据, 用列表把它们列出来。 ★ 用list和range命令组合,产生一个列表, 这个列表包括从20到1的所有数据。(步长为-1) ★ 在IDLE的Shell中输入range(10),它会返回range(0,10), 那么len(str(range(10)))的值是? """ 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源代码及素材等等。
打包下载地址:
链接:https://pan.baidu.com/s/1xLefkX7Fes36rQMV8i5ZDQ
提取码:akky