第15章

测试题

1、 使用模块有下面这些好处:

可以只写一次代码,并在多个程序中使用

你可以使用其他人写的模块

代码文件会更小,所以更容易发现代码中的问题

可以只使用完成工作真正需要的部分(模块)

2、 要创建模块,需要编写一些Python代码并保存在文件中。

3、 想使用一个模块时,要用import关键字导入。

4、 导入模块与导入命名空间是一样的。

5、 导入time模块从而能访问这个模块中的所有名字有两种方法,分别是import time 和from time import*

动手试一试

1、 要编写一个模块,只需要把“用大写字母打印名字”函数中的代码放在一个文件中,比如bigname.py文件。然后,要导入这个模块并调用函数,可以这样做:

Import bigname

Bigname.printMyNameBig()

也可以这样做:

From bigname import*

printMyNameBig()

2、 要把c_to_f()导入主程序的命名空间,可以这样做:

From my_module import c_to_f

或者这样做:from my_module import*

3、 下面这个小程序会打印从1到20的5个随机整数:

《与孩子一起学编程》第15、16、17章自测题答案

4、 下面这个小程序会工作30秒,每3秒打印一个随机小数:

《与孩子一起学编程》第15、16、17章自测题答案

第16章

测试题

1、 RGB值[255,255,255]得到白色

2、 RGB值[0,255,0]得到绿色

3、 要画矩形,可以使用Pygame方法Pygame.draw.rect()

4、 要画线把多个点连在一起(如连连看),可以使用pygame.draw.lines()方法

5、 “像素”是“图像元素”的简写,表示屏幕上(或纸上)的一个点

6、 在一个Pygame窗口中,位置[0,0]位于左上角

7、 在这个图中,位置[50,200]

8、 在这个图中,位置[300,50]位于字母D

9、 可以使用blit()方法在Pygame中复制图像。

10、要移动一个图像或者完成动画,可以使用以下两个步骤:

从原来的位置擦除图像

在新位置上绘制图像。

动手试一试

1、 下面的程序会在屏幕上画出一些不同的形状。也可以在\answers文件夹和网站上找到TIO_CH16_1.py。

《与孩子一起学编程》第15、16、17章自测题答案

《与孩子一起学编程》第15、16、17章自测题答案

2、 要把沙滩球图像换成一个不同的图像,只需把这行代码中的文件名:替换成另一个图片的文件名。

《与孩子一起学编程》第15、16、17章自测题答案

3、 在代码清单16-16中,只需要把x_speed=10

y_speed=10

改为其他的值,如

x_speed=20

y_speed=8

4、 要让球在一面“隐形”的墙上反弹,可以把代码清单16-16中的这行代码

If  x >screen.get_width()-90 or x<0

改为:if x > screen.get_width()-250 or x <0

这会让球在到达窗口边界之前就反向,可以对y坐标做同样的处理,让它在到达“地板”时也会反弹。

5、 将代码清单16-6中的display.flip移动到while循环内部,并增加一个延迟之后,代码如下所示:

《与孩子一起学编程》第15、16、17章自测题答案

应该能看到各个矩形会单独出现,因为我们放慢了程序的速度,现在画出各个矩形之后会刷新显示,如果对正弦曲线程序做这个处理,可以看到正弦曲线中的各个点分别画出。

第17章

测试题

1、 碰撞检测是指检测两个图形对象是否接触或重叠。

2、 像素完美碰撞检测是指使用图形对象的实际轮廓来完成碰撞检测,矩形碰撞检测使用对象的外围矩形来确定碰撞,像素完美碰撞检测更准确更真实,不过也需要写更多代码,另外还会让程序速度减慢。

3、 可以使用常规的Python列表或Pygame动细精灵组来跟踪多个精灵对象。

4、 代码中可以在各帧之间增加延迟来控制动画的速度(帧速率),或者使用Pygame.time.Clock得到某个帧速率,还可以改变每一帧将对象移动多远(多少像素)。

5、 使用delay方法不太准确,因为它没有考虑每一帧代码本身所花费的时间,所以你不能准确地知道最终的帧速率。

6、 可以使用pygame.time.Clock.get_fps()得到程序运行的帧速率。