Python程序设计习题与答案

? scroll(self, value, mode='relative'):移动指针到某一行,如果mode='relative',则表示从当前所在行移动value条;如果 mode='absolute',则表示从结果集的第一行移动value条。

第15章 多媒体编程

编程程序,在窗口上绘制一个三角形,设置三个顶点为不同的颜色,并对内部进行光滑着色。

答:

from import * from import * from import * import sys

class MyPyOpenGLTest:

def __init__(self, width = 640, height = 480, title = 'MyPyOpenGLTest'): glutInit

glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH) glutInitWindowSize(width, height) = glutCreateWindow(title) glutDisplayFunc glutIdleFunc (width, height)

#default drawing function def Draw(self):

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT) glLoadIdentity() glTranslatef, ,

#draw 2D graphic, leaving z to be 0 glBegin(GL_POLYGON) glColor3f, , glVertex3f, , glColor3f, , glVertex3f, , glColor3f, , glVertex3f, , glEnd()

glTranslatef, ,

glutSwapBuffers()

def InitGL(self, width, height): glClearColor, , , glClearDepth

glDepthFunc(GL_LESS)

glShadeModel(GL_SMOOTH) glEnable(GL_POINT_SMOOTH) glEnable(GL_LINE_SMOOTH)

glEnable(GL_POLYGON_SMOOTH) glMatrixMode(GL_PROJECTION)

glHint(GL_POINT_SMOOTH_HINT,GL_NICEST) glHint(GL_LINE_SMOOTH_HINT,GL_NICEST)

glHint(GL_POLYGON_SMOOTH_HINT,GL_FASTEST) glLoadIdentity()

gluPerspective, float(width)/float(height), , glMatrixMode(GL_MODELVIEW) def MainLoop(self): glutMainLoop()

if __name__ == '__main__': w = MyPyOpenGLTest() ()

编写程序,读取两幅大小一样的图片,然后将两幅图像的内容叠加到一幅图像,结果图像中每个像素值为原两幅图像对应位置像素值的平均值。

答:

from PIL import Image

im1 = ('d:\\\\') im2 = ('d:\\\\') size =

for i in range(size[0]): for j in range(size[1]): color1 = ((i,j)) color2 = ((i,j))

r = (color1[0]+color2[0])p3')] total = len(musics) while :

if not nextMusic = (musics)

print 'playing....',nextMusic else: (1)

def OnButtonOK(self, event): = True

# create a new thread to play music t = (target=

()

= False

= True

def OnButtonCancel(self, event): = False

= True = False

app = wxGUI() ()

运行本章中的代码并查看运行结果。 答:略。

第16章 逆向工程与软件分析

下载PE文件规范版本,并尝试了解PE文件基本结构。 答:略。

下载并安装IDA Pro与Immunity Debugger,并简单了解PE文件反汇编和调试步骤。 答:略。

安装并配置IDAPython插件,然后运行本章小节的Python代码。 答:略。

在Immunity Debugger调试器中运行本章小节中的代码。 答:略。

叙述软件调试断点的概念、作用及其分类。 答:

断点是最常用的软件调试技术之一,其基本思想是在某一个位置设置一个“陷阱”,当CPU执行到这个位置的时候停止被调试的程序并中断到调试器中,让调试者进行分析和调试,调试者分析结束后,可以让被调试程序恢复执行。通过设置断点可以暂停程序执行,并可以观察和记录指令信息、变量值、堆栈参数和内存数据,还可以深入了解和把握程序执行的内部原理和详细过程,断点对于软件调试具有重要的意义和作用。

断点可以分为软件断点、硬件断点和内存断点三大类。 1)软件断点

软件断点是一个单字节指令(INT 3,字节码为0xCC),可以在程序中设置多个软件断点,使得程序执行到该处时能够暂停执行,并将控制权转移给调试器的断点处理函数。

当调试器被告知在目标地址设置一个断点,它首先读取目标地址的第一个字节的操作码,然后保存起来,同时把地址存储在内部的中断列表中。接着,调试器把一个字节操作码 “0xCC” 写入刚才的地址。当 CPU 执行到“0xCC”操作码的时候就会触发一个 “INT 3”中断事件,此时调试器就能捕捉到这个事件。调试器继续判断这个发生中断事件的地址(通过指令指针寄存器EIP)是不是自己先前设置断点的地址。如果在调试器内部的断点列表中找到了这个地址,就将设置断点前存储起来的操作码写回到目标地址,这样进程被调试器恢复后就能正常的执行。

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4