好文档 - 专业文书写作范文服务资料分享网站

《Python程序设计方案》习题与答案

天下 分享 时间: 加入收藏 我要投稿 点赞

第8章 异常处理结构与程序调试

8.1 Python异常处理结构有哪几种形式? 答:

比较常用的形式有: 1)标准异常处理结构

try: try块 #被监控的语句,可能会引发异常 except Exception[, reason]: except块 #处理异常的代码

如果需要捕获所有异常时,可以使用BaseException,代码格式如下: try: ……

except BaseException, e: except块 #处理所有错误

上面的结构可以捕获所有异常,尽管这样做很安全,但是一般并不建议这样做。对于异常处理结构,一般的建议是尽量显式捕捉可能会出现的异常并且有针对性地编写代码进行处理,因为在实际应用开发中,很难使用同一段代码去处理所有类型的异常。当然,为了避免遗漏没有得到处理的异常干扰程序的正常执行,在捕捉了所有可能想到的异常之后,您也可以使用异常处理结构的最后一个except来捕捉BaseException。

2)另外一种常用的异常处理结构是try...except...else...语句。

3)在实际开发中,同一段代码可能会抛出多个异常,需要针对不同的异常类型进行相应的处理。为了支持多个异常的捕捉和处理,Python提供了带有多个except的异常处理结构,这类似于多分支选择结构,一旦某个except捕获了异常,则后面剩余的except子句将不会再执行。语法为: try: try块 except Exception1: except块1 except Exception2: except块2

#被监控的语句

#处理异常1的语句 #处理异常2的语句

4)将要捕获的异常写在一个元组中,可以使用一个except语句捕获多个异常,并且共用同一段异常处理代码,当然,除非确定要捕获的多个异常可以使用同一段代码来处

理,并不建议这样做。

5)最后一种常用的异常处理结构是try...except...finally...结构。在该结构中,finally子句中的内存无论是否发生异常都会执行,常用来做一些清理工作以释放try子句中申请的资源。语法如下: try: ……

finally:

......

#无论如何都会执行的代码

8.2 异常和错误有什么区别? 答:

异常是指因为程序执行过程中出错而在正常控制流以外采取的行为。严格来说,语法错误和逻辑错误不属于异常,但有些语法错误往往会导致异常,例如由于大小写拼写错误而访问不存在的对象,或者试图访问不存在的文件,等等。

8.3 使用pdb模块进行Python程序调试主要有哪几种用法? 答:主要有三种方式,

1)在交互模式下使用pdb模块提供的功能可以直接调试语句块、表达式、函数等多种脚本。

2)在程序中嵌入断点来实现调试功能

在程序中首先导入pdb模块,然后使用pdb.set_trace()在需要的位置设置断点。如果程序中存在通过该方法调用显式插入的断点,那么在命令提示符环境下执行该程序或双击执行程序时将自动打开pdb调试环境,即使该程序当前不处于调试状态。

3)使用命令行调试程序

在命令行提示符下执行“python –m pdb 脚本文件名”,则直接进入调试环境;当调试结束或程序正常结束以后,pdb将重启该程序。

8.4 Python内建异常类的基类是 BaseException 。 8.5 断言语句的语法为 assert 。 8.6 Python上下文管理语句是 with 。

第9章 GUI编程

9.1 设计一个窗体,并放置一个按钮,单击按钮后弹出颜色对话框,关闭颜色对话框后提示选中的颜色。

答:Python 2.7.8代码如下,

import wx

class wxGUI(wx.App): def OnInit(self):

frame = wx.Frame(parent=None, title='wxGUI', size=(160,140)) panel = wx.Panel(frame, -1)

buttonOK = wx.Button(panel, -1, 'OK', pos=(0,0))

self.Bind(wx.EVT_BUTTON, self.OnButtonOK, buttonOK)

frame.Show() return True

def OnButtonOK(self, event):

colorDlg = wx.ColourDialog(None) colorDlg.ShowModal()

color = colorDlg.GetColourData().Colour wx.MessageBox(str(color))

app = wxGUI() app.MainLoop()

9.2 设计一个窗体,并放置一个按钮,按钮默认文本为“开始”,单击按钮后文本变为“结束”,再次单击后变为“开始”,循环切换。

答:Python 2.7.8代码如下,

import wx

class wxGUI(wx.App): def OnInit(self):

frame = wx.Frame(parent=None, title='wxGUI', size=(160,140)) panel = wx.Panel(frame, -1)

self.buttonOK = wx.Button(panel, -1, 'Start', pos=(0,0))

self.Bind(wx.EVT_BUTTON, self.OnButtonOK, self.buttonOK)

frame.Show() return True

def OnButtonOK(self, event):

text = self.buttonOK.GetLabelText() if text == 'Start':

self.buttonOK.SetLabelText('End')

elif text == 'End':

self.buttonOK.SetLabelText('Start')

app = wxGUI() app.MainLoop()

9.3 设计一个窗体,模拟QQ登录界面,当用户输入号码123456和密码654321时提示正确,否则提示错误。

答:Python 2.7.8代码如下,

import wx

class wxGUI(wx.App): def OnInit(self):

frame = wx.Frame(parent=None, title='Login', size=(250,150), pos=(350,350)) panel = wx.Panel(frame, -1)

label1 = wx.StaticText(panel, -1, 'UserName:', pos=(0,10), style=wx.ALIGN_RIGHT) label2 = wx.StaticText(panel, -1, 'Password:', pos=(0,30), style=wx.ALIGN_RIGHT)

self.textName = wx.TextCtrl(panel, -1, pos=(70,10), size=(160,20))

self.textPwd = wx.TextCtrl(panel, -1, pos=(70,30), size=(160,20),style=wx.TE_PASSWORD)

buttonOK = wx.Button(panel, -1, 'OK', pos=(30,60))

self.Bind(wx.EVT_BUTTON, self.OnButtonOK, buttonOK) buttonCancel = wx.Button(panel, -1, 'Cancel', pos=(120,60))

self.Bind(wx.EVT_BUTTON, self.OnButtonCancel, buttonCancel) buttonOK.SetDefault()

frame.Show() return True

def OnButtonOK(self, event):

usrName = self.textName.GetValue() usrPwd = self.textPwd.GetValue()

if usrName=='123456' and usrPwd=='654321': wx.MessageBox('Right') else:

wx.MessageBox('Wrong') def OnButtonCancel(self, event): pass

app = wxGUI() app.MainLoop()

第10章 网络程序设计

10.1 简单解释TCP和UDP协议的区别。 答:

TCP协议是面向连接的、具有质量保证的可靠传输协议,但开销较大;UDP协议是尽最大能力传输的无连接协议,开销小,常用于视频在线点播(Video On Demand, VOD)之类的应用。TCP协议和UDP协议并没有优劣之分,仅仅是适用场合有所不同。

10.2 同学之间合作编写UDP通信程序,分别编写发送端和接收端代码,发送端发送一个字符串“Hello world!”。假设接收端在计算机的5000端口进行接收,并显示接收内容。

答:首先使用ipconfig/all命令查看本机IP地址,然后分别编写下面的代码,并将其中的IP地址替换为相应的IP地址。

接收端代码:

import socket

s=socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.bind((\空字符串表示本机任何可用IP地址 data, addr=s.recvfrom(1024) # 缓冲区大小为1024字节 print ' received message:%s' % data #显示接收到的内容 s.close( )

发送端代码:

import socket

s=socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

s.sendto(\假设10.20.52.248是接收端主机的IP地址 s.close( )

10.3 简单介绍socket模块中用于TCP编程的常用方法。

TCP一般用于要求可靠数据传输的场合。编写TCP程序时经常需要用到的socket模块方法主要有:

? ? ? ? ? ?

connect(address):连接远程计算机 send(bytes[,flags]):发送数据 recv(bufsize[,flags]):接收数据 bind(address):绑定地址

listen(backlog):开始监听,等待客户端连接 accept():响应客户端的请求

《Python程序设计方案》习题与答案

第8章异常处理结构与程序调试8.1Python异常处理结构有哪几种形式?答:比较常用的形式有:1)标准异常处理结构try:try块#被监控的语句,可能会引发异常exceptException[,reason]:except块#处理异常的代码如果需要捕获所有异常时,可以使用BaseException,代
推荐度:
点击下载文档文档为doc格式
1sa2a4wdfy9ersa9pruq6ksx797jw500wph
领取福利

微信扫码领取福利

微信扫码分享