《Python程序设计案例教程》-单元习题答案张瑞玲.docx

上传人:夺命阿水 文档编号:1242648 上传时间:2024-04-12 格式:DOCX 页数:34 大小:97.56KB
返回 下载 相关 举报
《Python程序设计案例教程》-单元习题答案张瑞玲.docx_第1页
第1页 / 共34页
《Python程序设计案例教程》-单元习题答案张瑞玲.docx_第2页
第2页 / 共34页
《Python程序设计案例教程》-单元习题答案张瑞玲.docx_第3页
第3页 / 共34页
《Python程序设计案例教程》-单元习题答案张瑞玲.docx_第4页
第4页 / 共34页
《Python程序设计案例教程》-单元习题答案张瑞玲.docx_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《《Python程序设计案例教程》-单元习题答案张瑞玲.docx》由会员分享,可在线阅读,更多相关《《Python程序设计案例教程》-单元习题答案张瑞玲.docx(34页珍藏版)》请在课桌文档上搜索。

1、Python程序设计案例教程单元习题参考答案单元11.Printe这是我的第一个PythOn程序!,)2.略单元21 .参考代码如下:a=10b=20temp=aa=bb=tempprint(a,b)2 .参考代码如下:r=float(inp11C请输入圆的半径:,)PI=3.1415926perimeter=2*PI*rarea=PI*r*2Print(,圆的周长:,perimeter)Printc圆的面积area)3 .参考代码如下:namel=input(”请输入学生姓名:)sexi=input(”请输入学生性别:”)agel=input(”请输入学生年龄:”)numl=input(请输

2、入学生学号:)print(,n,)name2=input(”请输入学生姓名:)sex2=input(”请输入学生性别:”)age2=input(”请输入学生年龄:”)num2=input(请输入学生学号:)print(学生基本信息:姓名:%s,性别:%s,年龄:s,学号:%s%(name1,sex1,age1,num1)Print(“学生基本信息:姓名:s,性别:s,年龄:S浮号:%s%(name2,sex2,age2,num2)4.参考代码如下:a=25.6b=3e=28c=8d=13.4f=65x=(e*d-b*f)(a*d-b*c)#+算Xy=(a*f-e*c)(a*d-b*c)卷t算y

3、PrintC该二元一次方程组中的X=,x)print,该二元一次方程组中的y=y)单元31 .参考代码如下:odd_sum=On=99print(循环开始)whilen0:odd_sum=odd_sum+nn=n-2print(循环结束,)print(l-100之间所有奇数的和为:odd_sum)2 .参考代码如下:foriinrange(l,10):fbrjinrange(h10):ifj=i:print(,%d*%d=%-2d%(j,i,i*j),end=)print()3 .参考代码如下:#year表示输入的年份#flag=O,不是闰年;flag=1,是闰年year=int(input(

4、,请输入年份:,)ifyear%4=0:ifyear%100=O:ifyear%400=0:flag=1else:flag=Oelse:flag=Ielse:flag=Oifflag=1:print(year,isleapyear)else:Print(year,isnotleapyear)4 .参考代码如下:#count表示水仙花数的个数count=0fornuminrange(100,1000):a=num%10b=num/10%IOc=num/100ifa*3+b*3+c*3=num:count+=1print(num,end=)P11nt()print(水仙花数的个数为:,count)

5、单元41 .参考代码如下:#商品字典dict_commodityJnfos=101: name:”香蕉,price:20),102: name1:苹果,price:25),103: name:“牛奶,price”:60),104: name:”面包,price:15,105: name:“薯片,price:5,)# 订单列表list_orders=,cid,:102,count:3),cid:103,count1:2),(,cid:105,count*:1),# (1)forcid,infbindict_commodity_infos.items():Print(商品单号d,商品名称s,商品价

6、格d%(cid,infoname,infoprice,)P11nt()# (2)fororderinlist_orders:Print(商品单号d,购买数量d%(order,cid,ordercount,)PrintC)# (3)fororderinlist_orders:cid=ordercid,commodity=dict_commodity_infoscidprint(商品名称s,商品价格d,购买数量%d(commodity,name,J,commodity,price,J,order,count,)PrintC)# (4)max_value=IiSLOrderSforiinrange(

7、l,len(list_orders):ifmax-value,countJlist_ordersicount:max_value=list_ordersiprint(max_value)P11nt(,)# (5)forrinrange(len(list-orders)-I):foreinrange(r+1,Ien(IiSLOrderS):iflist-ordersr,count,llist_ordersccount:list_ordersr,list_ordersc=list_orderslc,list_ordersrprint(list_orders)2.参考代码如下:Primeo到100以

8、内的挛生数对有:)m=2fornuminrange(3,100,2):foriinrange(2,num21):ifnum%i=0:breakelse:ifnum-m=2:print(f(m),(num)m=num单元51 .参考代码如下:defevent_num_sum():result=Ocounter=1whilecounterside_length_threeandside_length_one+side_length_threeside_length_twoandside_length_two+side_length_threeside_length_one):return”能构成三

9、角形”else:return”不能构成三角形”print(triangle()4 .参考代码如下:deflcm(x,y):#获取最大的数ifXy:greater=Xelse:greater=ywhileTrue:ifgreater%x=0andgreater%y=0:Icm=greaterbreakgreater+=1returnIcm#获取用户输入numl=int(input(输入第一个数字:)num2=int(input(输入第二个数字:)print(numl,num2,的最小公倍数为”,1Cm(numl,num2)5.参考代码如下:deffac(k):#定义fac函数,计算阶乘i=2t=

10、Iwhilei=k:t*=ii=i+1returnt#返回阶乘结果defsum(n):#定义sum函数,求累加S=Oi=1whileimax_val:max_val=aiifai0:ifmax_val%val=0andmin_val%val=0:returnvalval-=1returnvalPrint(HSegCd(2,4,6,9)10参考代码如下:importrandomprint(让我们来猜数吧,范围是零到一百的整数。)Print(请输入您猜的数字:”)Iisusmall=”再努力一下,你猜的数有点小”,”好像不对,再猜的大一点”,”啊哦,你的数有点小了”,”就快猜出来了,数再大点”Ii

11、sUbig=再努力一下,你猜的数有点大”,”好像不对,再猜的小一点”,“啊哦,你的数有点大了”,”就快猜出来了.数再小点”x=3while(x0):a=random.randint(0,100)while(True):enter1=input(u)if(int(enterl)a):print(random.choice(list-big)else:Print(您猜对了!)单元61 .参考代码如下:classCircle:def_init_(self,tup,radius,color):self.center=tupself.radius=radiusself.color=colordefper

12、imeter(self):return3.14*2*self.radiusdefarea(self):return3.14self.radius*self.radiusCirde=Cirde(0,0),5,“蓝色”)print(circle.perimeter()print(circle.area()2 .参考代码如下:classCourse:def_init_(self):self.number=1001self.name=语文self.teacher=张老师”self._location=2号教学楼3层305室”defshow_info(self):return(课程编号:%d课程名称:%

13、s任课教师:%S上课地点:%S%(self.number,self.natne,self.teacher,self._location)course=Course()print(course.showjnfo()3 .参考代码如下:classPerson:def_init_(self,name,age,bld-type):self.name-nameself.age=ageself.bld.type=blood_typedefdetail(self):temp=,iam%s,age%s,bloodtype%s,%(self.name,self.age,self.blood_type)print

14、(temp)zhangsan=PerSOne张三,18,A,)Iisi=PerSOnc李四:73JAB)yangwu=PerSOne杨五84,A)zhangsan.detail()lisi.detail()yangwu.detail()4 .参考代码如下:classFoo:def_init_(self,name,age,gender):self,name=nameself.age=ageself.gender=genderdefyuwen(self):print(%s,%s岁,s,喜欢上语文课%(self.namc,self.age,self.gender)defdianying(self):

15、print(%s,%s岁,s,喜欢看电影“%(self.name,self.age,self.gender)deflanqiu(self):print(%s,%s岁,s,喜欢打篮球%(self.name,self.age,self.gender)xiaoming=Foo(丽丽,10,女)xiaoming.yuwen()xiaoming.dianying()xiaoming.lanqiu()Iaoli=FOoC强强,12,男)laoli.yuwen()laoli.dianying()5 .参考代码如下:classHouseitem:def_init_(self,name,area):self,n

16、ame=nameself.area=areadef_str_(self):return,%s占地%.2f%(self.name,self.area)classHouse:def_init_(self,house_type,area):self.house_type=house_type#房子类型self.area=area#房子面积self.free_area=area#房子剩余面积self.itemjist=#家具名称列表def_str_(self):return户型:%sn总面积:%.2f剩余:%.2fn家具:%s%(self.house_type,self.area,self.free_

17、area,self.itemist)defadd_item(self,item):Print(要添加%s%item)#判断家具的面积是否超过房子的面积,如果超了则给出提示,退出添加#否则将家具名称添加到列表中,并用房子的剩余面积-家具面积ifitem.areaself.free_area:print(%s的面积太大了,无法添力口%item.name)returnself.itemjist.append(item.name)self.free_area-=item.area#创建家具bed=HoUSeltem(床,5)print(bed)chest=HOUSeltem(衣柜,2)print(ch

18、est)table=HOUSeItemc餐桌,1.5)print(table)chairl=HOUSeltem(椅子,0.5)print(chairl)chair2=HOUSeltemC椅子2,0.5)print(chair2)#创建房子my_home=HOUSe(两室一厅84)my_home.add_item(bed)my_home.add_item(chest)my_home.add_item(table)my_home.add_item(chairl)my_home.add_item(chair2)print(my_home)6 .参考代码如下:学生的学号是所有实例共用的属性,每个实例的

19、学号都需要在之前实例学号的基础上增加1.所以,应该把学号设置为类属性。而姓名和年龄这两个属性,是一个实例所独有的,在不同实例之间是完全独立的,因此,需要设置为实例属性。Python提供了一个名称为_init_()的特殊方法进行对象的初始化,所以,在新生成一个学生对象时,可以在_init_0方法中设置姓名和年龄的值。classStudent:IHHlid=0#定义一个类属性,用于计数def_init_(self,name,age):self,name=nameself.age=ageStudentJd+=1#每次对类进行实例化时计数器增加1definfo(self):print(Mynameis

20、%s,ageis%d,idis%d%(self.name,self.age,StudentJd)stul=Student(ZhangSan,33)stul.info()stu2=Student(,LiSi,24)stu2.info()stu3=Student(,WangWIr,22)stu3.info()7 .参考代码如下:classCar:defmove(self):Print(“汽车正在行驶中”)car_BMW=Car()car_BMW.color=黑色”car_BMW.horsepower=200car.BMW.model=,X3car_BMW.move()print(这辆%s%s的马力

21、是s匹”%(car_BMW.color,car_BMW.model,car_BMW.horsepower)car_BYD=Car()car_BYD.color=白色car_BYD.horsepower=,300,car.BYD.model=,S7car_BYD.move()print(这辆%s%s的马力是s匹”%(car_BYD.color,car_BYD.model,car_BYD.horsepower)8 .参考代码如下:在动物类Animal中,可以定义4个实例属性name.age.color,fd来表示名字、年龄、颜色和食物。方法的定义语法与函数的一样,也是使用def关键字,方法相当于定

22、义在类里面的函数。但是,与类外的函数不同的是,类方法的第一个参数都是指向调用者实例的引用,在定义时一般习惯用Self作为参数名。IlVlUclassAnimal:def_init_(selfsame,age,color,food):self.name=name#定义实例属性nameself.age=age#定义实例属性ageself.color=color#定义实例属性colorself.food=fd#定义实例属性food# 定义run方法defrun(self):print(%s正在奔跑.self.name)# 定义eat方法defeat(self):print(%s正在吃s.%(self

23、.name,self.food)# 定义get_age方法defget_age(self):print(%s今年d岁了(Self.name,self.age)panda=Anima1(盼盼,5,“黑白”,“竹子”)dog=Anima1(“旺旺”,4,“黄色”,“骨头)cat=AnimAC咪咪”,2,“白色鱼”)panda.run()panda.get_age()panda.eat()dog.run()dog.get.age()dog.eat()cat.run()cat.get_age()cat.eat()单元71、参考代码如下:deffilejread():data_li=withopen(f

24、ile.txt,r,encoding=utf8)asfile:fordatainfile.readlines():ifnotdata.startswith(#):data_li.append(data)returndata_liprint(file-read()2、参考代码如下:importjson#导入json模块#定义datadata=firstNmae,:,lastNmae,:姓,title:职位,mobilePhoneNumber:13322223333,organization:,公司名丁WeChantNUmber:微信号#将data转化为JSON格式的字符串,并赋值给json_da

25、tajson_data=json.dumps(data,indent=2,ensure_ascii=False)#打开data.json文件withOpen(data.json,w,encoding=utf-8)asfile:file.write(json_data)#将json_data写入data.json文件3、参考代码如下:#创建字典的文本文件dict.txt1将现有词典内容保存在文本文件中fr=open(dict.txt,r+)Dict=#空列表Is=Ui=0forrowinfr:#循环ls.append(row.split()#分割字符串并获取关键字i+=lwhile1:WOrd=

26、input(请输入一个英文单词:“)flag=Oj=fbrjinrange(i):ifword=lsj0:flag=lbreakifflag:print(word,lsjl)else:Print(“没有该单词,请输入其中文:end=”)chinese=input()fr.write(word+n+chinese+n)Print(“该单词已添加至词典!)ch=input(继续查找(Y/N):)ifch=-Y,orch=y:continueelse:Print(“欢迎再次使用!)breakfr.close()4、参考代码如下:course_score_dict=)#创建字典num=int(inpu

27、tC请输入课程数:)#设置课程数foriinrange(num):#循环data=inpu(请输入课程名称及对应的成绩(课程名称和对应成绩用空格隔开):)course,score=data.split(,)#课程名称和对应成绩用空格隔开course_score_dictcourse=eval(score)#将成绩转换成列表,并按升序排序ScoreJist=sorted(list(course_score_dict.values()#分别将最后一个成绩和第一个成绩定义为最高分和最低分max_score,min_score=scorejist-lJ,scorejist0average_score=

28、sum(score_list)/len(score_list)#求平均成绩foriteminCOUrSe_score_dict.items():#获取最高分和最低分对应的课程ifitem1=max_score:max_course=item0ifitem1=min_score:min_course=itemOJ#输出分数最高和最低的课程名称和对应成绩,并输出平均分PrintC分数最高的课程是,分数最低的课程是,平均分是:.2f.fbrmat(max-course,max_score,min_course,min_score,average-score)#将分数最高和最低的课程名称和对应成绩及平

29、均分写入到course文件中withopen(,course.txt,w)asfile:#以写方式打开文件f11ewrite(分数最高的课程是,分数最低的课程是,平均分是:.2f.format(max-course,max_score,min_course,min_score,average-score)5、参考代码如下:importtimedefwriteNote():#写便签方法date=time.localtime()#获取当地时间#将时间转换为指定格式字符串date=time.strftime(,%Y-%m-%d%H:%M:%S,date)word=input,请输入便签内容:,)wi

30、thopen(,note.txt,a,)asfile:file.write(date+*+word+n)defqueryNote():#查询便签方法Str=input,请输入要查询的文字:withopen(note.txt)asfile:whileTrue::,)line=file.readline()#读取便签信息ifline=:#如果信息为空break#跳出循环ifstrinline:print(line,end=)defshowNote():withopen(note.txt)asfile:whileTrue:#如果查询问文字在便签中则输出line=file.readline()#读取便

31、签信息ifline=:#如果信息为空break#跳出循环print(line,end=)#输出便签信息PnntC便签本whileTrue:-)choice=input(,l:写便签,2:查询便签,3:浏览全部便签,q:退出系统n)ifchoice=q:Printc退出电子便签,)breakifchoice=,:writeNote()elifchoice=,2,:queryNote()elifchoice=3:showNote()单元81、参考代码如下:#用户自定义异常classCustomError(Exception):def_init_(self,value):self.value=val

32、ueself._class_._name_=【用户自定义异常】+self._class_._name_def_GetStr_(self):returnrepr(self)#在程序中触发用户自定义异常并处理try:raiseCustomError(hehe!)exceptCustomErrorase:print(e._class_._name_,已触发,值为:,e.value)print(e._GetStr_()finally:Print(都要处理finally子句!)2、参考代码如下:classMessageError(Exception):def_init_(self):self.no_me

33、ssage=不能构成三角形classTriangle:defcomposed_triangle(self):side_length_one=int(input(请输入第一个边长:n)side_length_two=int(input(请输入第二个边长:n)side_length_three=int(input(请输入第三个边长:n)try:ifnot(side_length_one+side_length_twoside_length_threeandside_length_one+side_length_threeside_length_twoandside_length_two+side_

34、length_threeside_length_one):raiseMessageErrorOexceptMessageErrorase:rint(e.no-message)else:Printc可以构成)triangle=Triangle()posed_triangle()3、参考代码如下:”分析:首先定义字典保存身份证号码前2位对应的省区编号,并输入身份证号码;然后使用if语句判断其长度是否等于18.如果是,在try子句中解析身份证号码,获取省区、生日和性别信息,并使用except子句捕获KeyError异常(身份证号码前两位有误,字典中不存在该键),否则输出长度有误提示。#定义字典,保存

35、身份证号码前2位对应的省区编号province_dict=1:北京市丁17:,天津市13,:,河北省,14:山西省15:内蒙古自治区,2:辽宁省,22:,吉林省23,:黑龙江省31:上海市,32:江苏省丁3兑浙江省34:安徽省;35:福建省丁36:江西省,山东省:,4:河南省47:湖北省丁4子:湖南省,144):广东省丁4*广西壮族自治区46:海南省二50:重庆市51:,四川省57:贵州省,53:云南省丁54:西藏自治区6:,陕西省;62:甘肃省丁63,:倩海省丁64?宁夏回族自治区,65:新疆维吾尔自治区丁71:,台湾地区;8:香港特别行政区87:澳门特别行政区1instr=input,请输

36、入你的身份证号:江)#输入身份证号码iflen(instr)=18:try:province=province_dictinstr0:2#获取省区编号birthday=instr6:10+年+instr10:12+月+instr12:14+Bifint(instr16)%2=0:gender=女#获取生日#获取性别else:gender=男PrintC你来自province)Print(你的生日是birthday)Print(,你的性别是gender)#输出省区#输出生日#输出性别exceptKeyError:Printe你输入的身份证号码前2位有误,该省区编号不存在!)else:Printe

37、你输入的身份证号码长度有误!)4、参考代码如下:”分析:只要不符合题目要求,就抛出异常,所以我们可以使用assert子句对字符串进行判断。assert语句用来判断一个表达式,如果该表达式为False,触发AssertionError异常根据ISO8601,可以从以下几个方面来判断:(1)判断长度是否为19位;(2)判断-、T、:等是否在正确的位置;(3)如果(1)和(2)判断的结果均为真,则使用字符串切片获得表示年、月)日、时、分、秒等的数字,使用H)将数字转成整数,如果不是整数,会引发VahleElTOr异常;(4)对年、月、日继续做更加具体的判断,比如,年必须在1970-9999,月在112.日根据月和年判断是否正确;(5)对时、分、秒继续做判断。defcheck_dateti

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号