A11_序列与range命令Python教学视频

A11_序列与range命令Python教学视频

python序列与range命令演示档

这是风火轮编程Python初级教程的第十一课,下面是用python制作的学习大纲。

python序列与range命令演示档

python序列与range命令演示档


用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

李兴球

李兴球的博客是Python创意编程原创博客

评论已关闭。