版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《Python程序设计》期末考试试卷(五)课程名称:Python程序设计
适用专业:计算机相关专业
考试形式:闭卷笔试
考试时间:120分钟
总分:100分一、单项选择题(共20题,每题2分,共40分)以下哪个不是Python的关键字?A.passB.lambdaC.functionD.yield执行print(‘{:.2%}‘.format(0.1234))的输出结果是:A.0.12B.12.34%C.12.34D.0.12%想要创建一个从0到9(包含)的整数列表,以下哪个方法是不正确的?A.list(range(10))B.[iforiinrange(10)]C.list(0,1,2,3,4,5,6,7,8,9)D.[iforiinrange(0,10)]关于Python的切片语法s[i:j:k],以下描述正确的是:A.k必须为正整数B.i和j必须是整数C.当k为负数时,表示从后向前切片D.i默认是0,j默认是-1已知d={‘x‘:1,‘y‘:2},执行d.get(‘z‘,3)的结果是:A.3B.NoneC.抛出KeyErrorD.‘z‘关于集合运算,以下哪个表达式可以判断集合A是否为集合B的子集?A.A<=BB.A<BC.A.issubset(B)D.以上都对函数定义时,如果参数有默认值,那么:A.默认值参数必须放在非默认值参数之后B.默认值参数必须放在非默认值参数之前C.默认值参数可以在任意位置D.一个函数只能有一个默认值参数列表推导式[(x,y)forxin[1,2]foryin[3,4]]的结果是:A.[(1,3),(2,4)]B.[(1,3),(1,4),(2,3),(2,4)]C.[[1,3],[1,4],[2,3],[2,4]]D.[(1,2),(3,4)]在Python中,模块(module)和包(package)的关系是:A.包是特殊的模块B.模块是特殊的包C.包是包含多个模块的目录D.模块是包含多个包的目录面向对象中,__new__和__init__方法的区别是:A.__new__创建对象,__init__初始化对象B.__new__初始化对象,__init__创建对象C.两者功能相同D.__new__是类方法,__init__是静态方法使用@property装饰器后,如何为属性设置一个设置器(setter)?A.使用@setter装饰器B.使用@property.setter装饰器C.使用@属性名.setter装饰器D.无法设置想要将字符串‘hello\nworld‘按原样(包含换行符)写入文件,应该使用哪种文件打开模式?A.‘r‘B.‘w‘C.‘wb‘D.都可以,但写入时需注意转义pathlib.Path对象的.parent属性表示:A.文件的后缀名B.路径的父目录C.路径的绝对路径形式D.路径是否存在以下哪个异常表明尝试访问了字典中不存在的键?A.IndexErrorB.KeyErrorC.ValueErrorD.AttributeError在try...except语句中,想要捕获多个特定异常,应该:A.使用多个except块B.在一个except块中用元组指定多个异常类型C.使用exceptExceptionase然后判断类型D.以上都可以在SQL中,用于对查询结果进行排序的关键字是:A.SORTBYB.ORDERBYC.GROUPBYD.ARRANGEBY在Pandas中,用于处理时间序列数据的主要对象是:A.TimestampB.DatetimeIndexC.PeriodD.以上都是Matplotlib中,用于创建子图网格的便捷函数是:A.plt.subplots()B.plt.subplot()C.plt.figure()D.plt.axes()关于生成器表达式(x*2forxinrange(5)),以下说法正确的是:A.它会立即创建一个列表B.它返回一个迭代器,惰性求值C.它与列表推导式[x*2forxinrange(5)]没有区别D.它不能用在for循环中在虚拟环境中,使用pipfreeze>requirements.txt命令的目的是:A.安装requirements.txt中列出的所有包B.生成当前环境所有已安装包的列表C.卸载requirements.txt中列出的所有包D.升级requirements.txt中列出的所有包二、判断题(共15题,每题1分,共15分)Python中的复数类型用
j
表示虚部单位。()3==3.0
的结果是
True。()字符串的
strip()
方法只能去除首尾的空格。()列表的
copy()
方法创建的是列表的浅拷贝。()字典的
update()
方法可以用另一个字典或键值对序列来更新自身。()函数内部定义的嵌套函数可以访问外层函数的局部变量。()模块的
__name__
属性在其被直接运行时等于
‘__main__‘。()一个类如果没有显式定义
__init__
方法,Python会自动提供一个什么都不做的
__init__。()类属性在所有实例之间共享。()以
‘a+‘
模式打开的文件既可以读也可以追加写。()os.path.abspath(‘.‘)
可以获取当前目录的绝对路径。()try
块中的
return
语句会跳过
finally
块执行。()使用参数化查询(如
?
占位符)可以防止SQL注入攻击。()Pandas的
read_excel()
函数需要安装
openpyxl
或
xlrd
库支持。()plt.hist()
函数用于绘制数据的直方图。()三、填空题(共15空,每空1分,共15分)在Python中,空值(null)用关键字
______
表示。执行
divmod(10,3)
的结果是
______(一个元组)。使用
______
方法可以将字符串按指定分隔符分割成列表。已知
t=(1,),这是一个
______(数据类型)。使用
______
函数可以将一个可迭代对象的所有元素连接成一个字符串。在函数定义中,使用
/
符号可以强制其前面的参数必须以
______
形式传递。类的
______
方法定义了对象被
repr()
调用时的输出,通常用于调试。使用
pickle
模块的
______
函数可以将Python对象序列化并保存到文件。shutil
模块中的
______
函数可以递归地复制整个目录树。在正则表达式中,______
表示匹配字符串的结尾。SQL语句
______
用于在数据库中添加新的表。在Pandas中,df[‘col‘].______()
可以计算某列的标准差。使用
plt.______()
函数可以在图表中绘制散点图。collections
模块中的
______
类是一个带有默认值的字典。使用
______
语句可以强制退出当前循环。四、程序填空题(共2段程序,10个空,每空1分,共10分)1.员工薪资管理(5空)#员工数据:列表内是(姓名,部门,基本工资,奖金)元组employees=[(‘张三‘,‘技术部‘,8000,2000),(‘李四‘,‘市场部‘,7000,1500),(‘王五‘,‘技术部‘,9000,3000),]#任务1:计算每个员工的年薪(假设12个月基本工资+奖金)annual_salaries={}forempinemployees:name,dept,base,bonus=empannual=______(1)______*12+bonus#计算年薪annual_salaries[name]=annual#任务2:按部门统计总薪资dept_totals={}forempinemployees:name,dept,base,bonus=empsalary=base*12+bonus______(2)______[dept]=dept_totals.get(dept,0)+salary#累加部门总薪资print(‘部门总薪资:‘,dept_totals)#任务3:找出年薪最高的员工top_earner=______(3)______(annual_salaries.items(),key=lambdaitem:item[1])print(f‘年薪最高的员工是:{top_earner[0]},年薪{top_earner[1]}元‘)#任务4:将员工数据格式化为字符串emp_str_list=[]forempinemployees:#格式化为:`张三(技术部)`formatted=f‘{emp[0]}({emp[1]})‘emp_str_list.______(4)______(formatted)#添加到列表#任务5:将格式化后的字符串用‘;‘连接result=______(5)______#使用join方法连接列表print(‘员工列表:‘,result)2.网络数据获取与处理(5空)importrequestsimportjsondeffetch_weather(city_code):“”“获取指定城市的天气数据(模拟API调用)”“”#模拟APIURL,实际使用需替换为真实API#url=f‘/{city_code}‘#这里我们模拟一个本地JSON文件或一个假数据weather_data={‘101010100‘:{‘city‘:‘北京‘,‘temp‘:22,‘condition‘:‘晴‘},‘101020100‘:{‘city‘:‘上海‘,‘temp‘:25,‘condition‘:‘多云‘},}returnweather_data.get(city_code)defprocess_weather_info():city_code=input(‘请输入城市代码:‘)info=fetch_weather(city_code)ifnotinfo:print(‘未找到该城市的天气信息。‘)return#任务:将获取到的天气信息字典,使用json模块的______(6)______方法#转换为格式化的JSON字符串(缩进为2)json_str=json.______(7)______(info,indent=2,ensure_ascii=False)print(‘原始天气信息:‘)print(json_str)#将信息保存到文件filename=f‘weather_{city_code}.json‘try:withopen(filename,______(8)______,encoding=‘utf-8‘)asf:#以写入模式打开f.write(json_str)print(f‘天气信息已保存到{filename}‘)exceptIOErrorase:print(f‘保存文件失败:{e}‘)#模拟从文件加载并读取温度try:withopen(filename,‘r‘,encoding=‘utf-8‘)asf:loaded_info=json.______(9)______(f)#从文件加载JSON数据temp=loaded_info[‘temp‘]print(f‘{loaded_info[“city“]}当前温度是{temp}摄氏度。‘)#根据温度给出建议iftemp>30:advice=‘天气炎热,注意防暑。‘eliftemp<10:advice=‘天气寒冷,注意保暖。‘else:advice=‘天气宜人。‘print(‘建议:‘,______(10)______)#打印建议except(FileNotFoundError,json.JSONDecodeError,KeyError)ase:print(f‘处理数据时出错:{e}‘)#运行process_weather_info()五、编程题(共2题,每题10分,共20分)1.面向对象设计:简单的在线购物系统(10分)任务:设计
User
类,属性包括:user_id(用户ID)、username(用户名)、email。设计
Product
类,属性包括:product_id(商品ID)、name(商品名)、price(价格)、inventory(库存)。设计
Order
类,属性包括:order_id(订单号)、user(一个
User
对象)、products(一个存储
(Product对象,数量)
元组的列表)、status(状态,如‘pending‘,‘shipped‘)。为
Order
类实现以下方法:add_product(product,quantity):向订单添加商品,需检查库存是否充足。calculate_total():计算订单总金额。ship_order():如果订单状态为‘pending‘,将其改为‘shipped‘,并减少相应商品的库存。display_order():打印订单详情。编写测试代码,创建用户、商品和订单,演示完整的购物流程。2.数据分析与报告生成(10分)任务:编写一个程序,分析“文创宝盒”的产品销售数据sales_data.csv,并生成一份文本报告。数据格式(CSV)示例:ProductID,ProductName,Category,SalesAmount,UnitsSoldP001,书签,文具,1500.50,100P002,丝巾,配饰,4500.00,30要求:使用Pandas读取CSV文件
sales_data.csv。计算以下指标:总销售额总销售量最畅销的产品(按销售量)销售额最高的类别将计算结果组织成一个字典。将这个字典以及原始的DataFrame概览(使用
df.describe())写入一个新的文本文件
sales_report.txt。报告格式应清晰易读,包含适当的标题和说明。处理文件不存在、数据为空或格式错误等异常情况,并给出友好提示。《Python程序设计》期末考试试卷(五)答案课程名称:Python程序设计
适用专业:计算机相关专业
考试形式:闭卷笔试
考试时间:120分钟
总分:100分一、单项选择题C(function不是关键字,def才是)B(格式化为百分比)C(list()需要接收一个可迭代对象,不能直接接多个参数)C(步长k可为负,表示反向切片)A(get方法提供默认值)D(A<=B
或
A.issubset(B)检查子集,A<B检查真子集)AB(嵌套循环的列表推导式)CA(__new__是构造方法,创建实例;__init__是初始化方法)C(例如
@property装饰name方法后,用@name.setter装饰setter方法)B(文本模式即可,换行符\n会被正确写入和读取)BBDBD(Pandas时间序列处理涉及多个对象)A(plt.subplots()一次性创建图形和子图网格)B(生成器表达式惰性求值,节省内存)B(生成依赖列表)二、判断题√√(值相等,类型不同)×(strip()默认去除首尾空白字符,包括空格、换行符等;可指定字符)√√√(闭包特性)√√√√(‘a+‘模式打开用于读写,文件指针在末尾)√×(finally块无论如何都会执行,即使在try块中遇到return)√√√三、填空题None(3,1)
(商和余数)split()元组(单元素元组需要逗号)str.join()位置参数__repr__dumpcopytree()$CREATETABLEstdscatterdefaultdictbreak四、程序填空题1.员工薪资管理(1)base(2)dept_totals(3)max(4)append(5)‘;‘.join(emp_str_list)2.网络数据获取与处理(6)dumps(7)dumps(8)‘w‘(9)load(10)advice五、编程题参考答案1.面向对象设计:简单的在线购物系统classUser:def__init__(self,user_id,username,email):self.user_id=user_idself.username=usernameself.email=emailclassProduct:def__init__(self,product_id,name,price,inventory):duct_id=product_id=nameself.price=priceself.inventory=inventorydefreduce_inventory(self,quantity):ifquantity<=self.inventory:self.inventory-=quantityreturnTruereturnFalseclassOrder:def__init__(self,order_id,user):self.order_id=order_idself.user=userducts=[]#存储(Product,quantity)元组self.status=‘pending‘defadd_product(self,product,quantity):ifproduct.inventory<quantity:print(f‘商品{}库存不足(剩余{product.inventory})。‘)returnFalseducts.append((product,quantity))print(f‘已添加{quantity}件{}到订单。‘)returnTruedefcalculate_total(self):total=0.0forproduct,quantityinducts:total+=product.price*quantityreturntotaldefship_order(self):ifself.status!=‘pending‘:print(‘订单已发货或已取消。‘)returnFalse#检查库存并扣减forproduct,quantityinducts:ifnotproduct.reduce_inventory(quantity):print(f‘发货失败:商品{}库存不足。‘)returnFalseself.status=‘shipped‘print(f‘订单{self.order_id}已发货。‘)returnTruedefdisplay_order(self):print(f‘订单号:{self.order_id}‘)print(f‘客户:{self.user.username}({self.user.email})‘)print(‘商品列表:‘)foridx,(product,quantity)inenumerate(ducts,1):print(f‘{idx}.{}x{quantity}@¥{product.price:.2f}=¥{product.price*quantity:.2f}‘)print(f‘订单总额:¥{self.calculate_total():.2f}‘)print(f‘状态:{self.status}‘)#测试代码if__name__==‘__main__‘:user1=User(‘U001‘,‘张三‘,‘zhangsan@‘)prod1=Product(‘P001‘,‘文创书签‘,15.0,50)prod2=Product(‘P002‘,‘敦煌丝巾‘,299.0,20)order1=Order(‘ORD2023001‘,user1)order1.add_product(prod1,2)order1.add_product(prod2,1)order1.display_order()print(‘\n尝试发货...‘)order1.ship_order()order1.display_order()print(f‘商品{}剩余库存:{prod1.inventory}‘)评分要点:三个类定义完整,属性正确。(3分)Product.reduce_inventory方法实现库存检查与扣减。(1分)Order.add_product包含库存检查。(2分)Order.ship_order逻辑正确,包含状态检查和库存扣减。(2分)Order.calculate_total和display_order方法实现正确。(1分)测试流程完整。(1分)2.数据分析与报告生成importpandasaspddefgenerate_sales_report(csv_file,report_file):try:#1.读取数据df=pd.read_csv(csv_file)ifdf.empty:print(‘警告:销售数据文件为空。‘)return#2.计算指标total_sales=df[‘SalesAmount‘].sum()total_units=df[‘UnitsSold‘].sum()#最畅销产品(按销售量)best_selling_product_row=df.loc[df[‘UnitsSold‘].idxmax()]best_selling_product={‘ProductID‘:best_selling_product_row[‘ProductID‘],‘ProductName‘:best_selling_product_row[‘ProductName‘],‘UnitsSold‘:int(best_selling_product_row[‘UnitsSold‘])}#销售额最高的类别sales_by_category=df.groupby(‘Category‘)[‘SalesAmount‘].sum()top_category=sales_by_category.idxmax()top_category_sales=sales_by_category.max()#3.组织结果report_dict={‘total_sales‘:round(total_sales,2),‘total_units_sold‘:int(total_units),‘best_selling_product‘:best_selling_product,‘top_category‘:{‘category‘:top_category,‘sales‘:round(top_category_sales,2)}}#4.写入报告文件withopen(report_file,‘w‘,encodi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 生活垃圾转运分拣工安全防护竞赛考核试卷含答案
- 2026年新科教版初中七年级道德与法治下册第三单元集体利益个人利益卷含答案
- 印后制作员岗前竞争考核试卷含答案
- 光敏电阻器制造工岗前技能认知考核试卷含答案
- 果蔬汁加工工岗前工作技巧考核试卷含答案
- 2026年新科教版初中八年级科学下册第三单元光合作用实验卷含答案
- 焊接专机装配工岗前设备性能考核试卷含答案
- 实验动物养殖员岗前变更管理考核试卷含答案
- 玻璃配料工安全知识竞赛考核试卷含答案
- 飞机供氧系统调试工变更管理模拟考核试卷含答案
- 2025年医疗机构患者就诊流程手册
- 湖南省社保知识培训课件
- 员工行政规范培训课件
- 水平定向钻施工方案
- 2026年流动式起重机司机理论考题及答案(500题)
- 2025年空军专业技能类文职人员考试物资器材保管员练习题及答案
- 直播公司制度管理制度范本(3篇)
- 2025年菏泽一中自主招生题库及答案
- 酒店服务团队介绍
- 出口管制介绍课件
- 《特种行业许可证》旅馆业各项安全管理制度
评论
0/150
提交评论