Python程序设计-试卷三及答案_第1页
Python程序设计-试卷三及答案_第2页
Python程序设计-试卷三及答案_第3页
Python程序设计-试卷三及答案_第4页
Python程序设计-试卷三及答案_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《Python程序设计》期末考试试卷(三)课程名称:Python程序设计

适用专业:计算机相关专业

考试形式:闭卷笔试

考试时间:120分钟

总分:100分一、单项选择题(共20题,每题2分,共40分)下列哪个选项不是Python的基本数据类型?A.intB.listC.arrayD.dict执行print(3*‘ab‘)的输出结果是:A.abababB.‘ab‘*3C.3abD.报错在Python中,用于逻辑“与”运算的运算符是:A.&B.andC.&&D.or已知列表a=[1,2,3],要将列表扩展为[1,2,3,4,5],应使用:A.a.append([4,5])B.a.extend([4,5])C.a.insert(3,[4,5])D.a=a+4+5关于元组,以下说法正确的是:A.元组创建后,可以使用append方法添加元素B.元组中的元素值可以被修改C.元组可以作为字典的键D.元组比列表占用的内存更多字典的pop方法和del语句的主要区别是:A.pop可以指定默认值,del不能B.pop会返回值,del不会C.pop只能删除最后一个元素D.没有区别集合s={1,2,3},执行s.add(2)和s.update([3,4])后,s的结果是:A.{1,2,3,4}B.{1,2,3,2,3,4}C.{1,2,3}D.{1,2,3,2,4}关于函数的返回值,下列说法正确的是:A.函数必须有return语句B.函数可以返回多个值(实质是返回一个元组)C.return语句只能返回一个值D.函数没有return语句则返回0列表推导式[xforxinrange(10)ifx%2==0]的结果是:A.[0,2,4,6,8]B.[1,3,5,7,9]C.[0,1,2,3,4,5,6,7,8,9]D.[2,4,6,8]在模块utils.py中定义了函数process(),在另一个文件中如何正确导入并调用?A.importprocessfromutils;process()B.importutils;cess()C.fromutilsimportprocess();D.fromutilsimport*;cess()面向对象编程的“封装”特性主要目的是:A.实现代码的复用B.隐藏对象的内部实现细节,仅对外提供接口C.一个接口,多种实现D.子类可以继承父类的特征在类的方法定义中,使用@classmethod装饰器的方法,其第一个参数通常命名为:A.selfB.clsC.thisD.class关于文件操作模式,下列描述错误的是:A.‘r‘以只读方式打开文件B.‘w‘以写入方式打开文件,会覆盖原文件C.‘a‘以追加方式打开文件D.‘x‘以读写方式打开文件,如果文件已存在则打开使用pathlib模块,获取当前脚本所在目录的父目录路径,正确的方法是:A.Path.cwd()B.Path.home()C.Path(__file__).parentD.Path(‘../‘)以下哪种异常通常在尝试除以零时发生?A.ValueErrorB.TypeErrorC.ZeroDivisionErrorD.ArithmeticError在SQLite中,用于更新表中已有记录的命令是:A.ALTERB.UPDATEC.MODIFYD.CHANGE在Pandas中,用于删除DataFrame中所有包含缺失值(NaN)的行的函数是:A.df.dropna()B.df.fillna()C.df.isnull()D.df.notnull()Matplotlib中,用于创建图形和子图的核心函数通常是:A.plt.figure()和plt.subplot()B.plt.create()和plt.axes()C.plt.plot()和plt.show()D.plt.draw()和plt.pause()生成器函数与普通函数的区别在于它使用什么关键字产生值?A.returnB.yieldC.generateD.next关于正则表达式r‘^\d{3}-\d{8}$‘,以下描述正确的是:A.匹配以3个数字开头,后跟8个数字的字符串B.匹配3个数字、一个短横线、8个数字的字符串C.匹配任意11位数字D.匹配任意包含短横线的数字串二、判断题(共15题,每题1分,共15分)type(1/2)

的结果是

int。()‘hello‘.find(‘l‘)

‘hello‘.index(‘l‘)

的返回值相同,但找不到子串时的行为不同。()列表的

reverse()

方法会返回一个新的反转后的列表。()元组

(1)

和整数

1

是等价的。()在函数内部修改可变类型(如列表)的实参,会影响函数外部的原始数据。()使用

frommoduleimport*

会导入模块中的所有内容,包括以下划线开头的变量。()Python支持多继承,即一个类可以继承自多个父类。()实例方法可以通过类名直接调用(例如

ClassName.method(obj))。()使用

with

语句操作文件,即使发生异常,文件也会被正确关闭。()try

语句可以没有

except

子句,但必须有

finally

子句。()使用

cursor.executemany()

可以一次性插入多条记录,比循环调用

cursor.execute()

更高效。()Pandas的

Series

对象是一个一维的、带标签的数组。()plt.savefig(‘plot.png‘)

可以将当前图形保存为图片文件。()装饰器(Decorator)本质上是一个返回函数的函数。()在Python中,if__name__==‘__main__‘:

下的代码只有在直接运行该脚本时才会执行。()三、填空题(共15空,每空1分,共15分)在Python交互式环境中,使用

______()

函数可以查看一个对象的帮助信息。表达式

2**3**2

的运算结果是

______。(提示:幂运算从右向左)字符串

s=‘Python‘,执行

s[1:4]

得到的结果是

______。将列表

[3,1,4,1,5,9]

进行降序排序(原地修改)的语句是

______。定义函数时,在参数前使用两个星号

**kwargs,表示接收任意数量的

______

参数。使用

______

函数可以将字符串形式的Python表达式求值并执行。在类中,______

方法用于定义对象被

print()

时的输出内容。使用

os

模块中的

______

函数可以列出指定目录下的所有文件和子目录名。pathlib.Path(‘data.txt‘).______

属性可以获取文件

data.txt

的名称(含后缀)。在异常处理中,______

子句在没有发生异常时执行。SQL语句

SELECTCOUNT(*)FROMorders

用于统计

orders

表中的

______。在Pandas中,df[‘column‘].______()

可以计算某列的平均值。使用

plt.______(‘MyChart‘)

可以设置图表的标题。在正则表达式中,______

表示匹配一个非数字字符。上下文管理器的进入和退出操作分别由

______

______

方法定义。四、程序填空题(共2段程序,10个空,每空1分,共10分)1.用户反馈数据分析(5空)#模拟用户反馈列表,每个元素是(用户ID,评分(1-5),评论)feedbacks=[(101,5,‘产品很棒!‘),(102,3,‘物流有点慢‘),(103,5,‘’),(101,4,‘会再次购买‘),(104,2,‘质量一般‘),]#任务1:统计每个用户的平均评分user_scores={}foruid,score,commentinfeedbacks:#如果用户ID已存在,则将评分追加到列表中;否则创建新列表user_scores.______(1)______(uid,[]).append(score)#使用setdefault方法#计算平均分user_avg={}foruid,scoresinuser_scores.items():user_avg[uid]=______(2)______/len(scores)#使用sum函数计算总分print(‘用户平均评分:‘,user_avg)#任务2:筛选出有文字评论且评分>=4的反馈good_feedbacks=[(uid,s,c)for(uid,s,c)infeedbacksif______(3)______]#条件:评分>=4且评论非空print(‘优质反馈:‘,good_feedbacks)#任务3:找出所有出现过的评分值集合all_scores_set=______(4)______#使用集合推导式从feedbacks中提取评分print(‘所有评分值:‘,all_scores_set)#任务4:将优质反馈写入文件withopen(‘good_feedback.txt‘,‘w‘,encoding=‘utf-8‘)asf:foruid,score,commentingood_feedbacks:f.write(f‘用户{uid}:{score}分-{comment}______(5)______‘)#写入一行并换行2.数据分析与可视化(5空)importpandasaspdimportmatplotlib.pyplotasplt#假设有一个关于文创产品销售的数据文件‘sales.csv‘#数据格式:Date,Product,Category,Revenuetry:df=pd.______(6)______(‘sales.csv‘)#读取CSV文件print(‘数据预览:‘)print(df.head())#按产品类别统计总收入revenue_by_category=df.groupby(‘______(7)______‘)[‘Revenue‘].______(8)______()#按‘Category‘分组并求和print(‘\n按类别总收入:‘)print(revenue_by_category)#绘制柱状图plt.figure(figsize=(10,6))______(9)______(revenue_by_category.index,revenue_by_category.values)#绘制柱状图plt.title(‘文创产品各类别总收入‘)plt.xlabel(‘产品类别‘)plt.ylabel(‘总收入(元)‘)plt.xticks(rotation=45)plt.tight_layout()#保存图表plt.______(10)______(‘category_revenue.png‘,dpi=300)#保存为图片print(‘图表已保存为category_revenue.png‘)#plt.show()#如需显示可取消注释exceptFileNotFoundError:print(‘错误:未找到sales.csv文件。‘)exceptExceptionase:print(f‘数据处理过程中发生错误:{e}‘)五、编程题(共2题,每题10分,共20分)1.面向对象设计:订单管理系统(10分)背景:为“文创宝盒”设计一个简化的订单系统。任务:设计

OrderItem

类,属性包括:product_id(商品ID)、product_name(商品名)、unit_price(单价)、quantity(购买数量)。设计

Order

类,属性包括:order_id(订单号,字符串)、order_date(下单日期,字符串即可)、customer_name(客户名)和一个

OrderItem

对象的列表

items。为

Order

类实现以下方法:add_item(item):向订单中添加一个

OrderItem。calculate_total():计算并返回该订单的总金额(所有商品单价*数量之和)。display_order():打印订单详细信息,格式清晰,包括订单号、日期、客户名,以及每个商品的明细和总金额。编写测试代码,创建一个

Order

对象,添加至少两个

OrderItem,并调用

display_order()

方法输出结果。2.文件与异常处理综合应用(10分)背景:编写一个程序来备份“文创宝盒”的配置文件config.json,并在备份前检查配置的有效性。任务:编写函数

validate_config(config_path),它尝试读取指定路径的JSON配置文件。在函数中,使用

try-except

处理以下异常:FileNotFoundError:提示“配置文件不存在”。json.JSONDecodeError:提示“配置文件格式错误,不是有效的JSON”。如果文件读取成功,则检查配置字典中是否包含必需的键,例如

‘shop_name‘

‘version‘。如果不包含,抛出

ValueError

异常,并说明缺失的键。如果验证通过,函数返回

True。编写主程序逻辑:指定配置路径为

‘config.json‘。调用

validate_config

函数进行验证。如果验证成功,使用

shutil.copyfile

config.json

备份为

‘config_backup.json‘,并打印备份成功消息。妥善处理所有可能的异常,并向用户提供友好的错误信息。《Python程序设计》期末考试试卷(三)答案课程名称:Python程序设计

适用专业:计算机相关专业

考试形式:闭卷笔试

考试时间:120分钟

总分:100分一、单项选择题C(array是NumPy库中的类型,不是Python基本数据类型)ABBC(元组不可变,可以作为字典的键)BA(add添加已存在元素无效,update合并集合并去重)B(函数可以返回多个值,实质是返回一个元组;没有return则返回None)ABBBD(‘x‘

是创建模式,文件存在则报错)C(Path(__file__)

获取当前脚本的Path对象)CBAABB(匹配以3个数字开头,后跟短横线,再跟8个数字结尾的字符串)二、判断题×(结果是

float)√(find返回-1,index抛出异常)×(reverse是原地反转,返回None)×((1,)才是元组,(1)是整数)√×(默认不会导入以单下划线开头的名称)√√(但通常不这样调用)√×(try必须配合至少一个

except

finally)√√√√√三、填空题help512

(相当于

2**(3**2),即

2**9)ythlist_name.sort(reverse=True)

(假设列表变量名为

list_name)关键字eval()

(注意安全风险)__str__os.listdir()nameelse总记录数

行数meantitle\D__enter__;

__exit__四、程序填空题1.用户反馈数据分析(1)setdefault(2)sum(scores)(3)s>=4andc.strip()!=‘’或s>=4andc(4){scorefor(_,score,_)infeedbacks}或set(scorefor(_,score,_)infeedbacks)(5)\n或‘\n‘2.数据分析与可视化(6)read_csv(7)Category(8)sum(9)plt.bar(10)savefig五、编程题参考答案1.面向对象设计:订单管理系统classOrderItem:def__init__(self,product_id,product_name,unit_price,quantity):duct_id=product_idduct_name=product_nameself.unit_price=unit_priceself.quantity=quantityclassOrder:def__init__(self,order_id,order_date,customer_name):self.order_id=order_idself.order_date=order_dateself.customer_name=customer_nameself.items=[]defadd_item(self,item):ifisinstance(item,OrderItem):self.items.append(item)else:raiseTypeError(“只能添加OrderItem对象”)defcalculate_total(self):total=0.0foriteminself.items:total+=item.unit_price*item.quantityreturntotaldefdisplay_order(self):print(f“订单号:{self.order_id}“)print(f“下单日期:{self.order_date}“)print(f“客户:{self.customer_name}“)print(“-”*30)foridx,iteminenumerate(self.items,1):subtotal=item.unit_price*item.quantityprint(f“{idx}.[{duct_id}]{duct_name}“)print(f“单价:{item.unit_price:.2f}x数量:{item.quantity}={subtotal:.2f}“)print(“-”*30)print(f“订单总计:{self.calculate_total():.2f}“)#测试代码if__name__==‘__main__‘:#创建商品项item1=OrderItem(“P1001”,“故宫文创书签”,15.0,2)item2=OrderItem(“P1002”,“敦煌丝巾”,299.0,1)#创建订单my_order=Order(“ORD2023001”,“2023-10-27”,“张三”)my_order.add_item(item1)my_order.add_item(item2)#显示订单my_order.display_order()评分要点:正确定义两个类及其属性。(3分)Order.add_item

方法实现正确。(2分)Order.calculate_total

方法逻辑正确。(2分)Order.display_order

方法输出格式清晰。(2分)测试代码能运行并展示结果。(1分)2.文件与异常处理综合应用importjsonimportshutildefvalidate_config(config_path):“”“验证配置文件”“”try:withopen(config_path,‘r‘,encoding=‘utf-8‘)asf:config=json.load(f)exceptFileNotFoundError:raiseFile

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论