版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课后习题解答第一章习题解答你知道哪些编程语言呢,试着写出来。C/C++、Java、Python、JavaScript,Golang等。试着说出Python的优点和缺点。优点:简单易学、免费且开源、可移植性高、可扩展、拥有丰富的库等;缺点:速度慢、代码无法加密、对多线程支持不是很好。Python分为哪几个版本,这些版本之间相互兼容吗?分为Python2和Python3,这2个版本的语法有一些差别,不能相互兼容。Python能应用于哪些领域?Web应用开发、科学计算与大数据分析、云计算、自动化测试等。试着在IPython交互式命令窗口中输出“HelloPython”。略。试着在Spyder编辑器中输出“HelloPython”。略。试着在JupyterNoteBook编辑器中输出“HelloPython”。略。第二章习题解答解释Python中“/”和“//”的区别。在Python中“/”表示普通除法(也叫真除法),其结果是实数,而“//”表示整除,得到的结果是整数,并且自动向下取整。输入任意一个实数a,输出其绝对值。importmatha=float(input("请输入一个实数:"))print(a,"的绝对值是:",math.fabs(a))输入直角三角形的两个直角边的长度a、b,求斜边c的长度。importmatha=float(input("请输入直角边a的边长:"))b=float(input("请输入直角边b的边长:"))c=math.sqrt(a**2+b**2)print("斜边c的长度为:",c)在题目2中的程序中适当的地方插入注释。importmath#从键盘接收到的数据都是字符串类型,需要转换成数值类型a=float(input("请输入直角边a的边长:"))b=float(input("请输入直角边b的边长:"))c=math.sqrt(a**2+b**2)#求出斜边c的值,a**2表示a的平方print("斜边c的长度为:",c)输入圆的直径b,求出其面积S。importmathb=float(input("请输入圆的直径:"))S=math.pi*((b/2)**2)print("圆的面积为:",S)输入一个四位整数,将各个位数拆分显示,例如:输入为1234,则输出:1234的千位是1,百位是2,十位是3,个位是4。代码如下:num=int(input("请输入4位整数:"))qian=num//1000bai=(num//100)%10shi=(num//10)%10ge=num%10print(num,"的千位是",qian,",百位是",bai,',十位是',shi,',个位是',ge,sep='')从键盘接收<名字1>、<名字2>和<年龄>,在屏幕上显示如下内容:我叫<名字1>,我今年<年龄>岁了,我的好朋友是<名字2>。代码如下name1=input("请输入你的姓名:")age=input("请输入你的年龄:")name2=input("请输入你朋友的姓名:")temp='我叫'+name1+',我今年'+age+'岁了,\n我的好朋友是'+name2print(temp)第三章习题解答输入3个数,将这3个数从小到大排列并显示到屏幕上。x=int(input("请输入整数:"))y=int(input("请输入整数:"))z=int(input("请输入整数:"))ifx>y:x,y=y,xifx>z:x,z=z,xify>z:y,z=z,yprint(x,y,z)判断一个4位整数是否为回文数。(回文数,即从左往右看和从右往左看相等的数)num=int(input("请输入一个四位数:"))a=num//1000b=(num//100)%10c=(num//10)%10d=num%10new_num=d*1000+c*100+b*10+aifnew_num==num:print(num,"是回文数")else:print(num,"不是回文数")判断指定的年份是否是闰年。year=int(input("请输入年份:"))result=(year%4==0andyear%100!=0)or(year%400==0)ifresult:print(year,"年是闰年")else:print(year,"年不是闰年")输出a、b、c,求一元二次方程ax2+bx+c=0的2个实根。(默认a≠0)importmathprint("求ax^2+bx+c=0的根")a=float(input("请输入a:"))b=float(input("请输入b:"))c=float(input("请输入c:"))delta=b**2-4*a*cifdelta>=0:d=math.sqrt(delta)x1=(-b+d)/(2*a)x2=(-b-d)/(2*a)print("两个实根分别为:",x1,x2)else:print("此没有实根")完善习题4,使其能显示出重根和处理一元一次方程。importmathprint("求ax^2+bx+c=0的根")a=float(input("请输入a:"))b=float(input("请输入b:"))c=float(input("请输入c:"))delta=b**2-4*a*cifa!=0:ifdelta>0:d=math.sqrt(delta)x1=(-b+d)/(2*a)x2=(-b-d)/(2*a)print("两个实根分别为:",x1,',',x2)elifdelta==0:x=-b/(2*a)print("有1个二重根为:",x)else:print("此方程没有实根")elifb!=0:x=-b/cprint("该方程为一元一次方程,根为:",x)else:print("输入有误,不构成方程")输入一个百分制成绩(整数),将其转换为等级制成绩,换算关系如下(均包含端点值):90~100:优秀,80~89:良好,70~79:合格,60~69:及格,0~59:不及格代码如下:print("将百分制成绩转换成等级制成绩")mark=int(input("请输入百分制成绩:"))if0<=mark<=100:ifmark>=90:grade="优秀"elifmark>=80:grade="良好"elifmark>=70:grade="合格"elifmark>=60:grade="及格"else:grade="不及格"print(mark,"对应的等级制成绩为:",grade)else:print("输入分数有误,应在0~100内!")完善习题6,增加异常处理。print("将百分制成绩转换成等级制成绩")try:mark=int(input("请输入百分制成绩:"))if0<=mark<=100:ifmark>=90:grade="优秀"elifmark>=80:grade="良好"elifmark>=70:grade="合格"elifmark>=60:grade="及格"else:grade="不及格"print(mark,"对应的等级制成绩为:",grade)else:print("输入分数有误,应在0~100内!")exceptValueError:print("输入分数有误,请输入一个整数")第四章习题解答输入n,求出1~n之间的正整数的平方和。n=int(input("请输入正整数n:"))sum=0foriinrange(1,n+1):sum+=i**2print(sum)打印九九乘法表。foriinrange(1,10):print()forjinrange(1,i+1):print("{}*{}={:2}".format(i,j,i*j),end='')有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?输出这些数。count=0foriinrange(1,5):forjinrange(1,5):forkinrange(1,5):if(i!=k)and(i!=j)and(j!=k):count+=1print(i,j,k,sep='')print('共有',count,'个')输入一个自然数,判断是否为质数。n=int(input("请输入大于1的正整数n:"))ifn>2:result=Trueforiinrange(2,n):ifn%i==0:result=Falsebreakifresult:print(n,'是质数')else:print(n,'不是质数')else:print("请输入大于1的正整数")输入一个自然数n,输出2~n之间所有的质数。n=int(input('请输入大于2的整数'))count=0foriinrange(2,n+1):forjinrange(2,i):ifi%j==0:breakelse:count+=1print(i)#for循环每次正常执行后都会执行else后的语句print('共有质数',count,'个')输入两个整数,打印它们的商。对输入的不是整数或除数为零,进行异常处理。try:x=int(input('请输入第一个整数:'))y=int(input('请输入第二个整数:'))print(x,'/',y,'=',x/y)exceptValueError:print('请输入一个整数。')exceptZeroDivisionError:print('除数不能为零。')输入两个正整数(均大于1),求出它们的最大公约数。x=int(input('请输入第一个数:'))y=int(input('请输入第二个数:'))ifx>1andy>1:a=xb=yifa<b:a,b=b,awhileb!=0:temp=a%ba=bb=tempelse:print('{}和{}的最大公约数为:{}'.format(x,y,a))else:print('请输入大于1的整数')******************************foriinrange(10):print('{:^20}'.format('*'*i))编写猜数字游戏,用户一共有5次机会,机会用完之后可以选择再来一轮或者退出游戏,要求使用random模块,猜数范围为1~100之间的整数(包含端点值)。importrandomwhileTrue:print('------------------猜数游戏开始------------------')secret=random.randint(1,101)print(secret)guess=int(input("猜一下是几:"))count=1ifguess==secret:print("运气真好,一下子就猜中了")whileguess!=secret:guess=int(input("哎呀,猜错了,请重新输入吧:"))count+=1ifguess==secret:print("猜对了!")breakelse:ifguess>secret:print("大了大了~~~",end='')else:print("小了小了~~~",end='')ifcount>=5:print("您的机会已用完")breakflag=input("还要再玩一轮吗(y/n):")ifflag=='n':breakprint("退出游戏")第五章习题解答输入10个数,并求出这10个数的和及平均值。numlist=[]sums=0foriinrange(10):i=float(input("请输入第{}个数".format(i+1)))numlist.append(i)fornuminnumlist:sums+=numaverage=sums/10print("和为:",sums,",平均值为:",average)输入一个大于2的整数n,计算2~n之间所有的质数,要求用列表储存计算结果。num=[]n=int(input("请输入大于2的整数:"))foriinrange(2,n):forjinrange(2,i):ifi%j==0:breakelse:num.append(i)#for循环每次正常执行后都会执行else后的语句print(num)输入某年某月某日,判断这一天是这一年的第几天?year=int(input("请输入年:"))month=int(input("请输入月:"))day=int(input("请输入日"))months=(0,31,59,90,120,151,181,212,243,273,304,334)if0<month<=12:sum=months[month-1]else:print("输入有误,请重新输入!")sum+=dayleap=0if(year%400==0)or((year%4==0)and(year%100!=0)):leap=1if(leap==1)and(month>2):sum+=1print("{}年{}月{}日是本年度的第{}天".format(year,month,day,sum))将列表a的数据复制到列表b中,同时再修改列表a,要求列表b中的数据不会发生变化。a=[1,2,3,4,5,6,7,8]b=a[:]c=aa[0]=100print(a,b,c)输入一个列表(使用eval函数)和2个整数作为下标,然后输出列表中介于2个下标之间(下标从0开始,包含首尾值)的元素组成的子列表。例如用户输入[1,2,3,4,5,6]和2,5,程序输出[3,4,5,6]。x=eval(input("请输入一个列表:"))start,end=eval(input("请输入开始下标和结束下标,用英文逗号分隔:"))print(x[start:end+1])设计一个字典,并编写程序,用户输入内容作为键,然后输出字典中对应的值,如果用户输入的键不存在,则输出“您输入的键不存在!”d={1:'a',2:'b',3:'c',4:'d','a':1}v=input("请输入键")v=eval(v)print(d.get(v,'您输入的的键不存在'))计算所有的“水仙花数”并打印出来,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=13+53+33。numlist=[]forninrange(100,1000):i=n//100j=(n//10)%10k=n%10ifn==i**3+j**3+k**3:numlist.append(n)print(numlist)在屏幕上输出m行n列,宽度为i,由某种符号构成的空心矩形。whileTrue:m=int(input("请输入行数:"))n=int(input("请输入列数:"))i=int(input("请输入宽度:"))ifm>=2*iandn>=2*i:breakelse:print("输入有误,请重新输入!")char=input("请输入符号:")forainrange(0,m):ifa<iora>=m-i:print(char*n)else:print(char*i,''*(n-2*i),char*i,sep='')print()求s=a+aa+aaa+aaaa+aa...a的值,a是一个数字,最后一项有n位,由用户输入a和n。例如用户,输入2和5,则计算s=2+22+222+2222+22222(此时共有5个数相加)的值。whileTrue:a=int(input("请输入整数a(1~9):"))if1<a<9:n=int(input("请输入要计算的个数n:"))ifn>0:breakelse:print("输入有误,请重新输入!")else:print("输入有误,请重新输入!")#方法一:普通计算numlist=[]sums=0Tn=0foriinrange(0,n):Tn+=aa=a*10sums+=Tnnumlist.append(Tn)print('s={}'.format(numlist[0]),end='')foriinrange(1,n):print('+{}'.format(numlist[i]),end='')print('={}'.format(sums))#方法二:使用字符串sums=0numlist=[]foriinrange(1,n+1):num=int(str(a)*i)sums+=numnumlist.append(num)print('s={}'.format(a),end='')foriinrange(1,n):print('+{}'.format(numlist[i]),end='')print('={}'.format(sums))第六章习题解答Python中导入模块有几种方式?3种。import<模块名>[as<别名>]from<模块名>import<对象名>[as<别名>]from<模块名>import*输入1个列表,将这个列表降序排列,并打印出来。numlist=eval(input("请输入一个列表:"))numlist=sorted(numlist,reverse=True)print(numlist)编写程序,生成包含100个0到10之间的随机整数,并统计每个元素的出现次数。importrandomx=[random.randint(0,10)foriinrange(100)]#使用集合s=set(x)forvins:print(v,x.count(v),sep=':',end='')print()#使用字典d=dict()forvinx:d[v]=d.get(v,0)+1fork,vind.items():print(k,v,sep=':',end='')格式化输出当前时间,暂停两秒,再输出当前时间。importtimeprint(time.strftime('%Y-%m-%d%H:%M:%S',time.localtime(time.time())))#暂停两秒time.sleep(2)print(time.strftime('%Y-%m-%d%H:%M:%S',time.localtime(time.time())))编写函数求出区间[i,j]内(包含端点值)所有整数的和。defSum(i,j):s=0forkinrange(i,j+1):s=s+kreturnsprint(Sum(1,5))编写函数,计算三门课程总分和平均值。defcalc_grade(math,english,chinese):sum_of_grade=math+english+chineseavg_of_grade=float("{:.1f}".format(sum_of_grade/3))returnsum_of_grade,avg_of_gradesum_of_grade,avg_of_grade=calc_grade(75,82,93)print('成绩总和:',sum_of_grade)print('平均成绩:',avg_of_grade)输出斐波那契数列的第n项。斐波那契数列,指的是这样一个数列:1、1、2、3、5、8、13、21、34…,第一项和第二项为1,从第三项开始,每一项都是前两项之和。注意,要使用递归函数的方式。deffib(n):ifn==1orn==2:return1returnfib(n-1)+fib(n-2)#输出斐波那契数列的第10项print(fib(10)利用递归函数的方法求n!(n的阶乘)。deffact(j):sum=0ifj==0:sum=1else:sum=j*fact(j-1)returnsumn=int(input("请输入一个自然数:"))print("{}的阶乘是{}".format(n,fact(n)))编写函数,可以接收任意多个整数并输出其中的最大值和所有整数之和。defdemo(*v):print(v)print("最大值为{},和为{}\n".format(max(v),sum(v)))demo(1,2,3)demo(5,2,7,1)demo(90,2,7,42,1)第七章习题解答类由哪几个部分构成?类由三个部分构成:类的名称:类型名(类名的第一个字母大写)类的属性:对象的属性(一组数据/变量)类的方法:对象的方法(要实现的功能(行为))面向对象程序设计的三要素分别为、和。面向对象程序设计的三要素分别为封装、继承、多态。解释Python中以下划线开头的成员名特点。__foo__:系统定义的特殊成员名字,类似__init__()之类的。_foo:以单下划线开头的表示的是protected类型的变量,即保护类型只能允许其本身与子类进行访问(创建的实例可以访问),不能用于frommoduleimport*__foo:双下划线的表示的是私有类型(private)的变量,只能是允许这个类本身进行访问了。定义一个Point点类。它有两个实例成员变量x和y,一个__init__()方法对它们初始化,再定义一个show方法,显示x和y的值,最后定义对象并调用show方法。classPoint:def__init__(self,x,y):self.x=xself.y=ydefshow(self):print("({},{})".format(self.x,self.y))#主程序p=Point(13,57)p.show()定义Student类,有一个类级的成员变量country,并通过类成员方法get_country和set_country显示和修改country的值。在构造方法中定义一个对象级的成员变量name以及获取name值的对象方法。classStudent:country='中国'@classmethoddefget_country(cls):returncls.country@classmethoddefset_country(cls,country):cls.country=countrydef__init__(self,name):=namedefget_name(self):return#主程序stu=Student('吴大洋')print(Student.get_country(),end=",")print(stu.get_name(),stu.get_country())Student.set_country('美国')print(Student.get_country(),end=",")print(stu.get_name(),stu.get_country())stu.set_country('英国')print(Student.get_country(),end=",")print(stu.get_name(),stu.get_country())定义People类,实例成员变量有身份证号、姓名和年龄。定义People类的派生类:Student类和Teacher类。Student类增加实例成员变量学号、班级和分数;Teacher类增加实例变量工号、学院和工资。编写主程序,定义类的对象,设置对象的实例属性,显示对象的信息。classPeople:def__init__(self,idnum,name,age):self.idnum=idnum=nameself.age=ageclassStudent(People):def__init__(self,idnum,name,age,stuid,grade,score):super(Student,self).__init__(idnum,name,age)self.stuid=stuidself.grade=gradeself.score=scoreclassTeacher(People):def__init__(self,idnum,name,age,jobno,college,salary):super(Teacher,self).__init__(idnum,name,age)self.jobno=jobnoself.college=collegeself.salary=salary#主程序if__name__=='__main__':p=People(,'张晓晓',20)print(p.idnum,,p.age)s=Student(,'吴大洋',24,1221,'计算机181班',630)print(s.idnum,,s.age,end="")print(s.stuid,s.grade,s.score)t=Teacher(,'刘晓辉',30,1087,'计算机学院',4500)print(t.idnum,,t.age,end="")print(t.jobno,t.college,t.salary)为第6题的各个类增加show方法,使其可以显示本类的成员信息classPeople:def__init__(self,idnum,name,age):self.idnum=idnum=nameself.age=agedefshow(self):print(self.idnum,,self.age,end="")classStudent(People):def__init__(self,idnum,name,age,stuid,grade,score):super().__init__(idnum,name,age)self.stuid=stuidself.grade=gradeself.score=scoredefshow(self):super().show()print(self.stuid,self.grade,self.score,end="")classTeacher(People):def__init__(self,idnum,name,age,jobno,college,salary):super(Teacher,self).__init__(idnum,name,age)self.jobno=jobnoself.college=collegeself.salary=salarydefshow(self):super().show()print(self.jobno,self.college,self.salary,end="")#主程序if__name__=='__main__':p=People(,'张晓晓',20)s=Student(,'吴大洋',24,1221,'计算机181班',630)t=Teacher(,'刘晓辉',30,1087,'计算机学院',4500)formin[p,s,t]:m.show()print()设计一个日期类,包括年、月、日三个成员变量,其中年为私有变量。编写构造方法、年月日值的显示方法以及修改年值的方法,最后编写主模块定义其对象,赋值为当前日期,对对象的值进行修改并显示对象的结果。importdatetimeclassDate:def__init__(self,y,m,d):self.__year=yself.month=mself.day=ddefshow(self):print("%d年%d月%d日"%(self.__year,self.month,self.day))
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人教版信息技术第七册第3课《电子公告牌》课件
- 人音版五年级上册《歌唱二小放牛郎》课件
- 四年级上册条形统计图
- 北师大版语文六上《白桦林的低语》课件1
- 山东人民版思品二上《遇到困难的时候》课件7
- 河南九州通新增销售贮存放射性药品项目环境影响报告表
- 外墙装饰施工组织设计编制规范
- 企业生成式人工智能内控管理制度
- 市政广场设施维护与保养方案
- 建筑给排水施工组织设计编制规范
- 专项审计报告模板及填写说明
- 叙事疗法本土化-洞察及研究
- 贵州省市政基础设施工程资料管理导则
- 有限空间安全知识培训
- 【MOOC】《研究生英语科技论文写作》(北京科技大学)中国大学MOOC慕课答案
- 专题2.6绝对值贯穿有理数的八大经典题型(举一反三)(浙教版)(原卷版)
- 初中物理晋升高级(一级)职称水平考试模拟试卷有答案解析共三套
- 电机制造人工智能技术应用
- 食品安全与日常饮食 知到智慧树网课答案
- MOOC 马克思主义基本原理概论-南京航空航天大学 中国大学慕课答案
- (高清版)DZT 0331-2020 地热资源评价方法及估算规程
评论
0/150
提交评论