《Python程序设计》习题答案.pdf

上传人:高校教****PT 文档编号:67471920 上传时间:2022-12-24 格式:PDF 页数:18 大小:266.67KB
返回 下载 相关 举报
《Python程序设计》习题答案.pdf_第1页
第1页 / 共18页
《Python程序设计》习题答案.pdf_第2页
第2页 / 共18页
点击查看更多>>
资源描述

《《Python程序设计》习题答案.pdf》由会员分享,可在线阅读,更多相关《《Python程序设计》习题答案.pdf(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Python 程序设计程序设计 练习答案练习答案(部分)部分)黄锐军黄锐军 编编著著 练习一练习一 1.输入矩形的长与宽,计算矩形面积 2.输入一个时间值 s,它是距当日午夜的秒值,计算目前的时间,时间按 HH:MM:SS 格式输出。3如 a=1、b=2、c=3、d=0 写出下列的逻辑值:(1)ab and bc or a+bc(2)a-bc and not c(3)not d or bc+a or a(4)d and b and cd and a*bc(5)not(ab and cd)(6)a*bc or b+cd and not d(7)c+d=b+d and dc(8)da+b+d an

2、d bc and b=c(2)not ab and b not=c or x+y=x+y)and c-a and y-x(4)not(x=a)and(y=b)and 0(5)not(a+b)+c-1 and b+c/2(6)a or 1+a and b and c 练习二练习二 1.输入 a、b、c 三个参数,求解 ax2+bx+c=0 的两个根,假定 b2-4ac0。2输入 a、b、c 三个参数,以它们作为三角形的三边,判断是否可以构成一个三角形,如能则进一步计算其面积。三角形的面积 s 可以用以下公式计算:s=sqrt(p*(p-a)*(p-b)*(p-c)其中 p=(a+b+c)/2。3

3、输入一个字母,判断它是否为小写英文字母。4从键盘输入 5 个字符,统计0字符出现的次数。5输入两个整数,判断哪个大并输出结果。6输入一个字母,如它是一个小写英文字母,则把它变为对应大写字母输出。7输入一个年份,判断它是否为闰年。8从键盘输入 a、b 两个数,按大小顺序输出它们。9输入 a、b、c 三个整数,找出最小的数。10某企业发放的奖金根据利润提成。利润低于或等于 10 万元时,奖金可提 12%;利润高于 10 万元,低于 20 万元时,高于 10 万元的部分,可提成 8.5%;20 万到 40 万之间时,高于 20 万元的部分,可提成 6%;40 万到 60 万之间时高于 40 万元的部

4、分,可提成 4%;60 万到 100 万之间时,高于 60 万元的部分,可提成 2.5%,高于 100 万元时,超过 100 万元的部分按 1%提成,从键盘输入当月利润,求应发放奖金总数?11平面上有四个圆,圆心分别为(2,2),(-2,2),(-2,-2),(2,-2),圆半径为 1。今输入任一点的坐标,判断该点是否在这四个圆中,如在则给出是在哪一个圆中。练习三练习三 1.计算 1+2+4+100 的和。答:s=0 for i in range(1,101):s=s+i print(s)2.计算 1+1/3+1/5+1/99 的和。答:s=0 for i in range(1,100,2):

5、s=s+1/i print(s)3.从键盘输入一个字符串,直到回车结束,统计字符串中的大小写英文字母各有多少个。答:s=input()a=0 b=0 for x in s:if x=a and x=A and x=Z:b+=1 print(小写:,a,大写:,b)4.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13,求出这个数列的前 20 项之和。答:s=0 a=1 b=2 t=for i in range(20):t=t+str(b)+/+str(a)if i19:t=t+else:t=t+=s=s+b/a c=a+b a=b b=c print(t+str(s)6 输入若

6、干个同学的成绩,计算平均成绩,输入的成绩为负数或大于 100 时表示结束输入。答:s=0 n=0 while True:m=float(input()if m100:break s=s+m n=n+1 print(平均:,s/n)7输入三个正整数 a、b、n,精确计算 a/b 的结果到小数后 n 位。8一个猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第 10 天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。答:n=10 while True:m=n flag=True for

7、 i in range(9):if m%2=0:m=m-m/2-1 else:flag=False break if m=1 and flag:break n=n+1 print(桃子数:,n)for i in range(9):print(i+1,n,-,n-n/2-1)n=n-n/2-1 结果:桃子数:1534 1 1534-766 2 766-382 3 382-190 4 190-94 5 94-46 6 46-22 7 22-10 8 10-4 9 4-1 9有一序列:1,3,5,8,13,21.,用 while 循环求出这个数列的前 20 项之和。答:a=3 b=5 s=1+3+5

8、 t=1+3+5+i=0 while i17:c=a+b s=s+c t=t+str(c)if(i=80:break print(y)15一球从 80 米高度自由下落,每次落地后返回原高度的一半,再落下。求它在第 10 次落地时共经过多少米?第 10 次反弹多高?答:h=80 s=h t=str(h)+for i in range(9):s=s+h t=t+str(h)+h=h/2 print(t.strip(+),=,s)print(第 10 次:,h)结果:80+80+40.0+20.0+10.0+5.0+2.5+1.25+0.625+0.3125=239.6875 第 10 次:0.15

9、625 练习练习四四 1.能直接修改字符串的某个字符吗?例如 s=abc,s0=1可以吗?2.输入一个字符串,输出它所包含的所有数字,例如输入23me3e,输出233 答:s=input()for x in s:if x=0 and xb:c=a-b else:c=b-a t=thour=c/3600 tmimute=(c-thour*3600)/60 tsecond=c-c-thour*3600-tminute*60 return t 练习五练习五 1.定义一个数学中的复数类 Complex,它有一个构造函数与一个显示函数,建立一个Complex 对象并调用该显示函数显示。答:class C

10、omplex:def _init_(self,x,y):self.x=x self.y=y def show(self):print(+str(self.x)+,+str(self.y)+)c=Complex(1,2)c.show()2.定义一个计算机类 MyComputer,它包含 CPU 类型(String 类型)、RAM 内存大小(Integer类型)、HD 硬盘大小(Integer 类型),设计它的构造函数,并设计一个显示函数,建立一个MyComputer 对象并调用该显示函数显示。答:class Computer:def _init_(self,CPU,RAM,HD):self.CP

11、U=CPU self.RAM=RAM self.HD=HD def show(self):print(self.CPU,self.RAM,self.HD)c=Computer(Intel i-7,8,500)c.show()2.设计一个整数类 MyInteger,它有一个整数变量,并有一个 Value 属性,可以通过为 Value存取该变量的值,还有一个转二进制字符串的成员函数 toBin 及转十六进制字符串的成员函数 toHex。答:class MyInteger:def _init_(self,v):self.Value=v def show(self):print(self.Value)

12、def toHex(self):return hex(self.Value)def toBin(self):return bin(self.Value)i=MyInteger(10)i.show()print(i.toHex()print(i.toBin()4.建立一个普通人员类 Person,包含姓名(m_name)、性别(m_sex)、年龄(m_age)成员变量。(1)建立 Person 类,包含 Private 成员 m_name、m_sex、m_age 成员变量;(2)建立 Person 的构造函数;(3)建立一个显示过程 Show(),显示该对象的数据;(4)派生一个学生类 Stud

13、ent,增加班级(m_class),专业(m_major),设计这些类的构造函数;(5)建立 m_class、m_major 对应的属性函数 sClass()、sMajor();(6)建立显示成员函数 Show(),显示该学生对象所有成员数据;答:class Person:def _init_(self,name,sex,age):self._m_name=name self._m_sex=sex self._m_age=age def show(self,end=n):print(self._m_name,self._m_sex,self._m_age,end=end)class Stude

14、nt(Person):def _init_(self,name,sex,age,mclass,major):Person._init_(self,name,sex,age)self._m_class=mclass self._m_major=major def sClass(self):return self._m_class def sMajor(self):return self._m_major def show(self):Person.show(self,end=)print(self._m_class,self._m_major)s=Student(A,M,20,Class A,C

15、omputer)s.show()5.建立一个时间类 Time,它包含时 hour,分 minute,秒 second 的实例属性(1)设计时间显示函数 show(self);(2)设计两个时间大小比较函数 compare(self,t),其中 t 是另外一个时间;答:class Time:def _init_(self,h,m,s):self.hour=h self.minute=m self.second=s def show(self):s=:02d:02d:02d.format(self.hour,self.minute,self.second)print(s)return s def

16、compare(self,t):a=self.hour*3600+self.minute*60+self.second b=t.hour*3600+t.minute*60+t.second if ab:return 1 elif a=b:return 0 else:return-1 a=Time(12,23,1)b=Time(10,6,34)c=pare(b)if c=0:print(a.show(),is same as,b.show()elif c0:print(a.show(),is later than,b.show()else:print(a.show(),is earlier th

17、an,b.show()结果:12:23:01 10:06:34 12:23:01 is later than 10:06:34 练习六练习六 1 编写一个程序建立一个文本文件 abc.txt,向其中写入”abcn”并存盘,查看 abc.txt 是几个字节的文件,说明为什么。答:4 字节 2 用 Windows 记事本编写一个文本文件 xyz.txt,在其中存入”123”后打”Enter”键换行,存盘后查看文件应是 5 个字节长,用 read(1)读该文件,看看要读 5 次还是 4 次就把文件读完,为什么?编写程序验证。答:5 字节 3编写程序查找某个单词(键盘输入)所出现的行号及该行的内容,并

18、统计该单词在文件共出现多少次。答:def scanWord(s):words=i=0 w=while i=a and si.lower()=z:w=w+si else:if w:words.append(w)w=i=i+1 if w:words.append(w)return words def countWord(word,words):n=0 for w in words:if w=word:n+=1 return n def countWordInFile(word,fileName):count=0 f=open(fileName,r)rows=f.readlines()no=0 fo

19、r row in rows:no+=1 words=scanWord(row)if word in words:print(no,row,end=)count+=countWord(word,words)f.close()print(Total,count)fileName=input(输入文件:)word=input(输入单词:)countWordInFile(word,fileName)4设一个文本文件 marks.txt 中存储了学生的姓名及成绩如下:张三 96 李四 95 每行为学生姓名与成绩,编写一个程序读取这些学生的姓名与成绩并按成绩的从高到低的顺序输出到另外一个文件 sorted

20、.txt 中。答:def read(fileName):st=f=open(fileName,r)rows=f.readlines()for row in rows:s=row.strip(n).split()if len(s)=2:d=Name:s0,Mark:float(s1)st.append(d)f.close()return st def sort(st):for i in range(len(st):for j in range(i+1,len(st):if stjMark=a and y=z:noy=noy+1 f.close()print(no)fileName=input(输

21、入文件:)count(fileName)练习七练习七 1.简述 Python 连接 MySQL 数据库的方法?2.fetchone()怎么样判断读到数据库末尾?3.fetchall()与 fetchone()有什么区别?4.rowcount()返回值代表什么?5.MySQL 中怎么样使用带参数的 SQL 命令?6.数据库操作完成后为什么要调用 commit()函数?7.什么是游标 cursor,它有什么作用?8.Python 怎么样连接 Sqlite 数据库?练习八练习八 1.套接字是什么?为什么在服务器端宇客户端建立了套接字就可以通信了?2.整数怎么样转为二进制数据?二进制数据又怎么样转为整

22、数?3.字符串怎么样转为二进制数据?二进制数据又怎么样转为字符串?转化与编码有关吗?4.你还能不能设计出其它的字符串传输的格式完成字符串的网络传输?5.设计一个服务器程序与客户端程序,完成一个文件的下载过程。答:(1)Server.py import socket import struct import os def readInt(socket):size=struct.calcsize(i)data=socket.recv(size)n=struct.unpack(i,data)0 return n def writeInt(socket,n):data=struct.pack(i,n)

23、socket.send(data)def readString(socket):size=struct.calcsize(i)d=socket.recv(size)n=struct.unpack(i,d)0 data=socket.recv(n)return data.decode(utf-8)def writeString(socket,s):data=s.encode(utf-8)size=len(data)d=struct.pack(i,size)socket.send(d)socket.send(data)try:s=socket.socket()host=socket.gethost

24、name()port=2345 s.bind(host,port)s.listen()print(host,在监听.);c=s.accept()0 fileName=readString(c)print(文件名称:+fileName)if os.path.exists(fileName):fobj=open(fileName,rb)data=fobj.read()fobj.close()size=len(data)writeString(c,OK)writeInt(c,size)c.send(data)else:writeString(c,No)c.close()s.close()except

25、 Exception as e:print(e)(2)Client.py import socket import struct import os def readInt(socket):size=struct.calcsize(i)data=socket.recv(size)n=struct.unpack(i,data)0 return n def writeInt(socket,n):data=struct.pack(i,n)socket.send(data)def readString(socket):size=struct.calcsize(i)d=socket.recv(size)

26、n=struct.unpack(i,d)0 data=socket.recv(n)return data.decode(utf-8)def writeString(socket,s):data=s.encode(utf-8)size=len(data)d=struct.pack(i,size)socket.send(d)socket.send(data)try:fileName=input(要下载文件名称:)s=socket.socket()host=socket.gethostname()port=2345 s.connect(host,port)writeString(s,fileName

27、)ans=readString(s)if ans=OK:size=readInt(s)data=b while len(data)0:data=data+d else:break fobj=open(fileName,wb)fobj.write(data)fobj.close()print(fileName+downloaded)else:print(Sorry,服务器没有这个文件!)s.close()except Exception as e:print(e)练习练习九九 1.设计一个汉字编码表查询程序,程序可以使用 seek 命令查找任何一个字符的GBK,Unicode,UTF8 的编码,

28、执行的命令格式是“seek 字符”,例如执行:$seek 我 输出:我 GBK:CED2 Unicode:6211 UTF-8:E68891 答:def byteToHex(d):s=for b in d:t=hex(b)t=t2:if len(t)!=2:t=0+t s=s+t return s.upper()def decToHex(d):s=hex(d)return s2:.upper()while True:s=input($)s=s.split()if len(s)=2 and s0=seek:t=s10 gbk=byteToHex(t.encode(gbk)unicode=decT

29、oHex(ord(t)utf8=byteToHex(t.encode(utf-8)print(GBK:,gbk,Unicode:,unicode,UTF-8:,utf8)elif s0=exit:break 2.数字迷宫是又 0,1 组成的一个 m 行 n 列的二维矩阵,例如:0 0 0 1 0 0 0 0 0 0 1 0 就是一个 3 行 4 列的迷宫,其中每个元素是 0 或者 1,一个小虫从左上角的(0,0)入口,只能向上下左右行走,而且只能到达元素值为 0 的点,值为 1 的点不可以到达,然后从右下角的(2,3)点走出来。设计一个迷宫路径查找程序,随机生成一个 m 行,n 列的程序,为这

30、个小虫找到所有的不重复的道路。例如这个迷宫的道路一共有下列 5 条:Path 1 :-(0,0)-(0,1)-(0,2)-(1,2)-(1,3)-(2,3)Path 2 :-(0,0)-(0,1)-(1,1)-(1,2)-(1,3)-(2,3)Path 3 :-(0,0)-(1,0)-(1,1)-(1,2)-(1,3)-(2,3)Path 4 :-(0,0)-(1,0)-(1,1)-(0,1)-(0,2)-(1,2)-(1,3)-(2,3)Path 5 :-(0,0)-(1,0)-(2,0)-(2,1)-(1,1)-(1,2)-(1,3)-(2,3)Path 6 :-(0,0)-(1,0)-(2,0)-(2,1)-(1,1)-(0,1)-(0,2)-(1,2)-(1,3)-(2,3)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁