版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《Python程序设计》期末考试试卷(一)课程名称:Python程序设计
适用专业:计算机相关专业
考试形式:闭卷笔试
考试时间:120分钟
总分:100分一、单项选择题(共20题,每题2分,共40分)(从每题的四个选项中选择一个正确答案)Python语言不具备的特点是:A.简洁易读B.跨平台C.编译执行D.丰富的第三方库以下哪个选项可以正确创建一个空列表?A.list=[]B.list=list()C.list={}D.A和B都对已知字符串s="Hello,World!",执行s[7:12]的结果是:A.WorldB.World!C.o,WoD.,Worl在Python中,用于定义函数的关键字是:A.defB.functionC.lambdaD.define关于global关键字的作用,描述正确的是:A.用于声明一个全局常量B.用于在函数内部修改全局变量C.用于定义一个全局函数D.用于导入全局模块已知列表lst=[1,2,3,4],执行lst.pop(2)后,列表lst变为:A.[1,2,4]B.[1,3,4]C.[1,2,3]D.[2,3,4]下面关于字典的描述,错误的是:A.字典的键必须是不可变类型B.字典的值可以是任意类型C.可以使用in操作符检查键是否存在D.字典中的元素是有序存储的(Python3.6前)以下代码的输出结果是:print(3and0or5)A.0B.3C.5D.False使用open()函数以追加模式打开一个文本文件,正确的参数是:A.‘r‘B.‘w‘C.‘a‘D.‘x‘在异常处理中,无论是否发生异常都会执行的子句是:A.tryB.exceptC.elseD.finally在面向对象编程中,用于初始化新创建对象的方法名是:A.__init__B.__new__C.__start__D.__self__使用@property装饰器的主要目的是:A.将方法变为属性,便于访问B.将属性变为方法,增加逻辑C.声明一个静态方法D.声明一个类方法已知classStudent(Person),这表示:A.Student是Person的父类B.Person是Student的子类C.Student类继承自Person类D.Student和Person是同一个类使用pathlib模块获取当前工作目录路径,应使用:A.Path.home()B.Path.cwd()C.Path(‘.‘)D.Path(‘./‘)为了防止SQL注入攻击,向SQLite数据库执行带参数的查询时应使用:A.字符串格式化(f-string)B.字符串拼接(+)C.问号占位符(?)和元组参数D.直接执行原始字符串在Pandas中,用于从CSV文件读取数据并创建DataFrame的函数是:A.pd.read_excel()B.pd.read_csv()C.pd.read_table()D.pd.DataFrame()在NumPy中,用于计算数组所有元素平均值的函数是:A.np.sum()B.np.mean()C.np.average()D.np.median()以下代码试图匹配一个3位数字,正确的是:A.r‘\d\d\d‘B.r‘\d{3}‘C.r‘[0-9][0-9][0-9]‘D.以上都对列表推导式[x**2forxinrange(5)ifx%2==0]的结果是:A.[0,1,4,9,16]B.[0,4,16]C.[1,9]D.[0,2,4]关于Python的with语句,以下说法错误的是:A.常用于文件操作,确保文件被正确关闭B.可用于数据库连接,确保连接被释放C.可以完全替代try...except语句D.是一种上下文管理协议二、判断题(共15题,每题1分,共15分)(正确的打“√”,错误的打“×”)Python中的列表(list)和元组(tuple)都是可变的数据类型。()字典的键(key)可以是列表(list)。()break语句用于跳出当前循环,而continue语句用于跳过本次循环剩余代码。()在函数内部定义的变量是局部变量,仅在函数内有效。()使用importmodule_name导入模块后,调用其中的函数需使用module_name.function_name()。()面向对象三大特性是:封装、继承、递归。()类方法(@classmethod)的第一个参数通常命名为self。()Python中,is运算符用于比较两个对象的值是否相等。()open(‘file.txt‘,‘r‘,encoding=‘utf-8‘)中的‘r‘表示以只读模式打开文件。()try-except语句可以捕获所有类型的程序错误,包括语法错误。()在SQL中,UPDATE语句用于修改表中已有的记录。()Pandas的DataFrame是一个二维的、表格型的数据结构。()Matplotlib的plt.plot()函数默认用于绘制折线图。()lambdax:x*2等同于一个名为x,功能为returnx*2的函数。()Python中,一个模块(.py文件)只能被导入一次。()三、填空题(共15空,每空1分,共15分)在Python交互模式中,表示命令提示符的符号是。表达式
8//3
的结果是
。将数字3.14159格式化为保留两位小数的字符串,使用f-string应写为
。已知列表a=[1,2,3],b=[4,5,6],将两个列表合并为一个新列表[1,2,3,4,5,6]的表达式是。在函数定义中,用于接收任意数量关键字参数的形参写法是
。使用os模块中的函数可以判断一个文件或路径是否存在。在定义类时,用于返回对象的字符串表示形式,方便print()输出的特殊方法是。从集合set1中移除元素5,如果元素不存在也不报错,应该使用
方法。使用csv.reader()读取CSV文件,返回的是一个,每次迭代得到一行数据的。在正则表达式中,表示匹配一个数字字符。在SQL中,用于从数据库表中查询数据的关键字是。NumPy中用于创建等差数组的函数是或
。在Pandas中,df.groupby(‘column‘).sum()操作实现了按指定列分组并的功能。四、程序填空题(共2段程序,10个空,每空1分,共10分)1.“文创宝盒”购物车金额统计(5空)#假设购物车数据为一个列表,每个元素是一个包含商品名和价格的元组shopping_cart=[('书签',15.0),('明信片',30.0),('书签',15.0),('笔记本',25.0)]#任务1:使用列表推导式,计算所有商品的总金额total_cost=______(1)______#提示:使用sum函数和列表推导式print(f‘购物车总金额为:{total_cost}元‘)#任务2:统计每种商品的购买数量item_count={}foritem,priceinshopping_cart:______(2)______#提示:使用字典的get方法,若键不存在则返回0,然后加1print(‘商品购买数量:‘,item_count)#任务3:找出价格最高的商品most_expensive=______(3)______(shopping_cart,key=lambdax:x[1])#提示:使用max函数print(f‘最贵的商品是:{most_expensive[0]},价格为{most_expensive[1]}元‘)#任务4:将购物车数据格式化为字符串列表,便于保存cart_str_list=[f‘{item}:{price}‘______(4)______]#提示:遍历购物车print(‘格式化后的购物车:‘,cart_str_list)#任务5:将上述字符串列表用逗号连接成一个字符串cart_str=______(5)______#提示:使用字符串的join方法print(‘购物车字符串:‘,cart_str)2.类与继承(5空)classProduct:"""商品基类"""def__init__(self,pid,name,price):self.pid=pid=nameself.__price=price#价格设为私有属性______(6)______#装饰器,将方法变为属性,用于获取价格defprice(self):returnself.__price@price.setterdefprice(self,new_price):ifnew_price>0:self.__price=new_priceelse:print(‘价格必须大于0‘)defdisplay(self):returnf‘商品[{self.pid}]{}售价:{self.__price}元‘class______(7)______:#定义一个名为DiscountedProduct的子类"""打折商品类"""def__init__(self,pid,name,price,discount):______(8)______#调用父类的构造方法初始化pid,name,priceself.discount=discount#折扣率,如0.8表示8折defget_final_price(self):#计算折后价格return______(9)______*self.discount#提示:通过属性访问原价#重写display方法,显示折后价格defdisplay(self):original_info=______(10)______#提示:调用父类的display方法returnoriginal_info+f‘折后价:{self.get_final_price():.1f}元‘#测试代码dp=DiscountedProduct(‘P001‘,‘文创礼盒‘,100,0.8)print(dp.display())五、编程题(共2题,每题10分,共20分)1.文件处理与数据统计(10分)背景:“文创宝盒”系统每天会生成一个订单日志文件orders.log,每行记录格式为:订单ID,商品ID,数量,例如ORD001,P1001,2。任务:编写一个函数analyze_orders(file_path)。函数读取指定路径的日志文件。统计每种商品(商品ID)的总销售数量。找出销售数量最多的商品ID及其数量。将统计结果(商品ID:总数量)写入一个新文件sales_summary.txt,每行一个记录。在屏幕打印输出销售冠军信息。要求:使用with语句处理文件。考虑文件可能不存在或为空的情况,进行适当的异常处理。输出文件格式示例:P1001:15P1002:82.面向对象与异常处理(10分)背景:为“文创宝盒”设计一个简单的BankAccount(银行账户)类,用于模拟用户余额管理。任务:定义一个BankAccount类,包含以下属性:account_holder(户主姓名,字符串)__balance(账户余额,浮点数,私有属性)定义构造方法__init__(self,holder,initial_balance=0.0)。使用@property和@balance.setter实现对余额的封装,确保余额不能被直接设置为负数。定义以下方法:deposit(self,amount):存款。要求amount为正数,否则抛出ValueError异常。成功则更新余额。withdraw(self,amount):取款。要求amount为正数且小于等于余额,否则抛出ValueError异常。成功则更新余额。display(self):返回账户信息的字符串,格式如户主:张三,余额:500.00元。编写一段测试代码,创建一个账户,并进行至少一次存款、一次取款(包括一次会导致异常的取款尝试)操作,使用try-except处理异常。要求:体现封装性(私有属性、属性访问器)。在方法中进行参数校验并主动抛出异常。在主程序中演示异常的捕获与处理。《Python程序设计》期末考试试卷(一)答案课程名称:Python程序设计
适用专业:计算机相关专业
考试形式:闭卷笔试
考试时间:120分钟
总分:100分一、单项选择题(共20题,每题2分,共40分)C(解析:Python是解释执行语言,不是编译执行)D(解析:[]是列表字面量创建空列表,list()是列表构造函数创建空列表,{}创建的是空字典)A(解析:Python字符串切片是[起始索引:结束索引],左闭右开,索引从0开始,s[7:12]对应字符为W、o、r、l、d)A(解析:def是定义普通函数的关键字,function不是Python关键字,lambda定义匿名函数,define不是Python关键字)B(解析:global关键字用于在函数内部声明要修改的变量是全局变量,否则函数内部对同名变量的操作是创建局部变量)A(解析:lst.pop(index)删除指定索引的元素并返回该元素,索引2对应的元素是3,删除后列表变为[1,2,4])D(解析:Python3.6及以后字典才支持有序存储,3.6之前字典是无序的;字典的键必须是不可变类型(字符串、数字、元组等),值可以是任意类型,in可检查键是否存在)C(解析:Python中and优先级高于or,且非0数字为True,0为False。先执行3and0,结果为0;再执行0or5,结果为5)C(解析:'r'只读,'w'写入(覆盖原有内容),'a'追加(在文件末尾写入,不覆盖原有内容),'x'独占创建(文件不存在才创建,存在则报错))D(解析:try包裹可能出现异常的代码,except捕获并处理异常,else无异常时执行,finally无论是否有异常都会执行)A(解析:__init__是初始化方法,创建对象时自动调用;__new__是创建对象实例的方法;无__start__特殊方法;self是实例方法的第一个参数)A(解析:@property装饰器将方法转换为只读属性,调用时无需加括号,便于像访问普通属性一样访问方法返回值)C(解析:Python类继承语法为class子类名(父类名):,此处Student是子类,继承自父类Person)B(解析:Path.home()获取用户主目录,Path.cwd()获取当前工作目录,Path('.')和Path('./')是当前目录的路径对象,并非直接获取工作目录路径)C(解析:字符串格式化和拼接容易引发SQL注入,使用问号占位符+元组参数是安全的参数化查询方式,可避免SQL注入)B(解析:pd.read_excel()读取Excel文件,pd.read_csv()读取CSV文件,pd.read_table()读取分隔符分隔的文本文件(默认制表符),pd.DataFrame()直接创建DataFrame)B(解析:np.sum()计算数组元素总和,np.mean()计算平均值,np.average()可计算加权平均值,np.median()计算中位数)D(解析:\d\d\d、\d{3}、[0-9][0-9][0-9]均可匹配3位数字,功能等价)B(解析:列表推导式先遍历range(5)(0,1,2,3,4),再通过ifx%2==0筛选偶数(0,2,4),最后计算每个数的平方,结果为[0,4,16])C(解析:with语句是上下文管理,用于自动释放资源(文件、数据库连接等),无法替代try...except的异常捕获功能)二、判断题(共15题,每题1分,共15分)×(解析:列表(list)是可变数据类型,元组(tuple)是不可变数据类型)×(解析:字典的键必须是不可变类型,列表(list)是可变类型,不能作为字典的键)√(解析:break跳出当前整个循环,continue跳过本次循环剩余代码,直接进入下一次循环)√(解析:函数内部定义的变量是局部变量,作用域仅限于函数内部,外部无法直接访问)√(解析:importmodule_name导入模块后,需通过模块名.函数名()的方式调用模块中的函数,避免命名冲突)×(解析:面向对象三大特性是封装、继承、多态,递归是一种编程思想,并非面向对象特性)×(解析:类方法(@classmethod)的第一个参数通常命名为cls(代表类本身),实例方法的第一个参数通常命名为self)×(解析:is运算符用于比较两个对象的**内存地址(身份标识)**是否相同,==用于比较两个对象的值是否相等)√(解析:'r'是只读模式,只能读取文件内容,无法写入或修改文件)×(解析:try-except只能捕获程序运行时的异常,语法错误在程序运行前就会被Python解释器检测到,无法被try-except捕获)√(解析:SQL中,UPDATE语句用于修改表中已存在的记录,INSERT用于插入新记录,DELETE用于删除记录)√(解析:Pandas的DataFrame是二维表格型数据结构,包含行索引、列索引和二维数据,是Pandas的核心数据结构之一)√(解析:plt.plot()是Matplotlib中绘制折线图的默认函数,也可通过参数设置绘制其他图形)×(解析:lambdax:x*2是匿名函数,没有函数名,等同于deffunc(x):returnx*2,并非名为x的函数)√(解析:Python中,一个模块(.py文件)在一次程序运行中只会被导入一次,后续重复导入会直接使用已加载的模块,不会重新读取文件)三、填空题(共15空,每空1分,共15分)>>>2(解析://是整数除法,向下取整,8除以3的整数部分是2)f'{3.14159:.2f}'(解析:.2f表示格式化为保留两位小数的浮点数字符串)a+b(解析:列表+运算符用于合并两个列表,生成新列表,原列表不变;也可使用a.extend(b),但该方法是修改原列表,不生成新列表)**kwargs(解析:*args接收任意数量的位置参数,**kwargs接收任意数量的关键字参数,传入后封装为字典)os.path.exists()__str__()(解析:__str__()方法返回对象的友好字符串表示,print()输出对象时会调用该方法;__repr__()返回对象的官方字符串表示,用于调试)set1.discard(5)(解析:set.remove(5)移除元素时,元素不存在会报错;set.discard(5)元素不存在时不报错,更安全)迭代器;列表数字(解析:\d等价于[0-9],匹配任意一个0-9的数字字符)SELECTnp.arange()(或np.linspace())求和四、程序填空题(共2段程序,10个空,每空1分,共10分)1.“文创宝盒”购物车金额统计(5空)(1)sum([priceforitem,priceinshopping_cart])(2)item_count[item]=item_count.get(item,0)+1(3)max(4)foritem,priceinshopping_cart(5)‘,‘.join(cart_str_list)2.类与继承(5空)(6)@property(7)DiscountedProduct(Product)(8)super().__init__(pid,name,price)(9)self.price(10)super().display()五、编程题(共2题,每题10分,共20分)1.文件处理与数据统计(10分)参考代码:defanalyze_orders(file_path):try:withopen(file_path,‘r‘,encoding=‘utf-8‘)asf:sales={}forlineinf:line=line.strip()ifnotline:continuetry:order_id,prod_id,quantity=line.split(‘,‘)quantity=int(quantity)sales[prod_id]=sales.get(prod_id,0)+quantityexceptValueError:print(f‘行格式错误:{line}‘)continueifnotsales:print(‘日志文件为空。‘)return#找出销售冠军top_product=max(sales.items(),key=lambdax:x[1])print(f‘销售冠军商品ID:{top_product[0]},总销量:{top_product[1]}‘)#写入结果文件withopen(‘sales_summary.txt‘,‘w‘,encoding=‘utf-8‘)asout_f:forprod_id,totalinsales.items():out_f.write(f‘{prod_id}:{total}\n‘)print(‘统计结果已写入sales_summary.txt‘)exceptFileNotFoundError:print(f‘错误:文件{file_path}未找到。‘)exceptIOErrorase:print(f‘文件读写错误:{e}‘)#测试调用analyze_orders(‘orders.log‘)2.面向对象与异常处理(10分)参考代码:classBankAccount:def__init__(self,holder,initial_balance=0.0):self.account_holder=holderself.__balance=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理与绩效考核
- 2025年甲醇燃料船舶动力系统安全操作规程
- 四川内江市第六中学2025-2026学年八年级下学期5月期中道德与法治试题(含答案)
- 甘肃省兰州市2025-2026学年部编版九年级历史下学期阶段性学业水平检测题(含答案)
- 乙腈装置操作工创新思维考核试卷含答案
- 城市轨道交通设备调度员安全素养能力考核试卷含答案
- 乳品配料工岗前技能掌握考核试卷含答案
- 2026年新科教版高中高一化学上册第一单元物质的量浓度计算卷含答案
- 理货员安全生产能力考核试卷含答案
- 制苯装置操作工班组协作水平考核试卷含答案
- 江苏省2026年中职职教高考文化统考数学试卷及答案
- 26年类器官药敏联合基因检测用药
- 2026年西安建筑科技大学《绿色建筑学报》编辑部招聘(3人)笔试参考题库及答案解析
- 2026年北京市东城区高三二模生物试卷(含答案)
- 2026滁州市轨道交通运营有限公司第一批次校园招聘21人备考题库及完整答案详解一套
- T/CSMTNY 003-2026管输掺氢天然气质量分析与流量计量技术指南
- (2026年)压疮的预防及护理课件
- 2026届广西南宁市4月高中毕业班质量调研英语试卷(含答案无听力音频无听力原文)
- 侍茄师(雪茄服务师)初级测试题
- 嘉定区家委会工作制度
- 2026届上海市中考化学模拟试卷(含答案解析)
评论
0/150
提交评论