A13_小芽初长成(嵌套for循环)_Python教学视频

A13_小芽初长成(嵌套for循环)_Python教学视频

李兴球Python嵌套for循环与画笔教学

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

李兴球Python嵌套for循环与画笔教学

李兴球Python嵌套for循环与画笔教学

用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资源。)

李兴球

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

评论已关闭。