python程序设计教程(第2版)习题3-习题5代码答案
Posted Autumn fall
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python程序设计教程(第2版)习题3-习题5代码答案相关的知识,希望对你有一定的参考价值。
习 题 3
1.从键盘接收整数的一百分制成绩(0~100),要求输出其对应的成绩等级A~E。其中,90分(包含)以上为A,80~89(均包含)分为B,70~79(均包含)分为C,60~69(均包含)分为D.60分以下为E
score=int(input())
if score>=90:
print("A")
elif score>=80:
print("B")
elif score>=70:
print("C")
elif score>=60:
print("D")
else:
print("E")
2.预设一个0~9之间的整数,让用户猜一猜并输入所猜的数。如果大于预设的数,显示“太大”,小于预设的数,显示“太小”,如此循环,直至猜中该数,显示“恭喜!你猜中了!”。
import random
digit=random.randint(0,9)
while 1:
guess=int(input('请输入你猜想的数字'))
if guess==digit:
print('恭喜!你猜中了!')
break
if guess>digit:
print('太大')
else:
print('太小')
3.某电商平台上销售不同规格包装、不同价格的水笔。编写程序,在不考虑运费的情况下,从键盘分别输入两种水笔的包装和价格,分别计算单根水笔的价格,根据价格就低原则打印输出选择购买哪种产品。
size=[]
price=[]
for i in range(2):
size.append(int(input(f'第i+1种水笔的规格')))
price.append(int(input(f'第i+1种水笔的价格')))
if (price[1]/size[1])>(price[0]/size[0]):
print('选择购买第1种产品')
elif (price[1]/size[1])<(price[0]/size[0]):
print('选择购买第2种产品')
else:
print('两者单价一样,随意挑选')
4.输出1000以内的素数以及这些素数之和(素数,是指除了1和该数本身之外,不能被其他任何整数整除的数)。
list=[]
sum=2
for i in range(3,1001):
for t in range(2,i):
if i%t==0:
break
if i==t+1:
list.append(i)
break
for i in list:
sum=i+sum
print(sum)
5.输入一个时间(小时:分钟:秒),输出该时间经过5分30秒后的时间。
date=input('时间,格式为(小时:分钟:秒)')
list1=date.split(':')
print(list1)
list1=list(map(int,list1))
if (list1[2] + 30) < 60:
list1[2]=list1[2]+30
else:
list1[1]=list1[1]+1
list1[2]=list1[2]-30
if (list1[1]+5)>=60:
list1[0]=list1[0]+1
list1[1]=list1[1]-55
else:
list1[1]=list1[1]+5
list_new = [str(x) for x in list1]
result=':'.join(list_new)
print(result)
6.编写程序,按公式s=1^2+ 2^2 +3^2 +n^2求累加和s不超过1000的最大项数n,程序运行结果如下所示:
1 1
2 5
3 14
4 30
5 55
6 91
7 140
8 204
9 285
10 385
11 506
12 650
13 819
14 1015
累计和不超过1000的最大项是n=13。
n=50
print('n s')
for i in range(1,n):
sum=0
for t in range(1,i+1):
sum=t**2+sum
if sum<1000:
print(f'i sum')
else:
print(f'i sum')
print(f'累计和不超过1000的最大项是n=i-1')
break
习 题 4
1.从键盘输入一个正整数列表,以一1结束,分别计算列表中奇数和偶数的和。
ou=0
odd=0
str=input('输入一个正整数列表,每个正整数之间用,隔开,以-1结束')
list1=str.split(',')
list1=list(map(int,list1))
for i in list1:
if i!=-1:
if i%2==0:
ou=i+ou
else:
odd=odd+i
print(f'偶数的和为ou')
print(f'奇数的和为odd')
2.已知10个学生的成绩为68、75、32、99、78、45、88、72、83、78,请将成绩存放在列表中,请对其进行统计,输出优(100~90)、良(89~80)、中(79~60)、差(59~0)4个等级的人数。
list1=[68,75,32,99,78,45,88,72,83,78]
you=liang=zhong=cha=0
for i in list1:
if i>=90:
you=1+you
elif i>=80:
liang=liang+1
elif i>=60:
zhong=zhong+1
else:
cha=cha+1
print(f'优秀的you人,良的liang人,中的zhong人,差的cha人')
3.利用while循环创建一个包含10个奇数的列表,如果输入的不是奇数要给出提示信息并能继续输入,然后计算该列表的和与平均值。
list1=[]
while 1:
if len(list1)==10:
break
else:
a=int(input('输入你想放在列表中的奇数'))
if (a+1)%2==0:
list1.append(a)
else :
print('抱歉,输入错误')
sum1=sum(list1)
print(f'list的总和为sum1,平均值为(sum1/10)')
4.请用字典编程,已知某班学生的姓名和成绩如下:
姓名 成绩 姓名 成绩
张三 45 司音 90
李四 78 赵敏 78
徐来 40 张旭宁99
沙思思96 柏龙 60
如一 65 思琪 87
输出这个班的学生姓名和成绩,并求出全班同学的人数和平均分并显示。
dict='张三':'45','李四':'78','徐来':'40','沙思思':'96','如一':'65','司音':'90','赵敏':'78','张旭宁':'99','柏龙':'60','思琪':'87'
for i in dict.items():
print(i)
print(len(dict))
print(sum((map(int,dict.values())))/10)
5.某家商店根据客户消费总额的不同将客户分为不同的类型。如果消费总额>10万元,为铂金卡客户(platinum);如果消费总额>5万元且<10万元,为金卡客户(gold);如果消费总额>3万元且<5万元,为银卡客户(silver);如果消费总额<3万元,为普卡客户(ordinary)。现有一批顾客的消费金额(单位:万元)分别为2.3、4.5、24、17、1、7.8、39、21、
0.5、I.2、4、1、0.3,将消费金额存储在列表listl中,输出一个字典,分别以platinum、gold、silver、ordinary为键,以各客户类型人数为值。
list1=[2.3,4.5,24,17,1,7.8,39,21,0.5,1.2,4,1,0.3]
p_platinum=p_gold=p_silver=p_ordinary=0
for i in list1:
if i>=10:
p_platinum+=1
elif i>=5:
p_gold=p_gold+1
elif i>=3:
p_silver=p_silver+1
else:
p_ordinary=p_ordinary+1
dict=
'platinum':p_platinum,
'gold':p_gold,
'silver':p_silver,
'ordinary':p_ordinary
print(dict)
- 某企业为职工发放奖金:如果入职超过5年,且销售业绩超过15000元的员工,奖金比例为0.2;销售业绩超过10000元的员工,奖金比例为0.15;销售业绩超过5000元的员工,奖金比例为0.1;其他奖金比例为0.05。如果是入职不超过5年,且销售业绩超过4000的员工,奖金比例为0.045;否则为0.01。输入入职年限、销售业绩,输出奖金比例、奖金,并将奖金存放到列表中并输出该列表。入职年限(为整数)输入一1的时候结束输入,为简化所有输入均假定正确,不需判断小于0的情况。奖金为销售业绩与奖金比例的乘积。
list1=[]
while 1:
years = int(input('入职年限为'))
achievement = float(input('销售业绩为'))
if years==-1:
break
if years>5:
if achievement>15000:
ratio=0.2
elif achievement>10000:
ratio=0.15
elif achievement>5000:
ratio=0.1
else:
ratio=0.05
else:
if achievement>4000:
ratio=0.045
else:
ratio=0.01
list1.append(achievement*ratio)
print(f'奖金比例为ratio,奖金为achievement*ratio')
print(list1)
7.输入5个整数放到列表listl中,输出下标及值,然后将列表listl中大于平均值的元素组成一个新列表list2,输出平均值和列表list2.请利用列表推导式解决
list1=[]
for i in range(5):
list1.append(int(input('整数:')))
print(f'下标为i的值为list1[i]')
mean=sum(list1)/5
list2=[i for i in list1 if i>mean]
print(f'平均值为mean,list2为list2')
8.编写程序,将由1、2、3、4这4个数字组成的每位数都不相同的所有三位数存入一个列表中并输出该列表。请利用列表推导式解决
list1=[1,2,3,4]
result=[i*100+j*10+k for i in list1 for j in list1 for k in list1 if i!=j and i!=k and j!=k]
print(result)
9.编写程序,给定列表[1,9,8,7,6,5,13,3,2,1],先输出原列表,删除其中所有奇数后再输出。请利用列表推导式解决该问题。
list1=[1,9,8,7,6,5,13,3,2,1]
print(list1)
list2=[i for i in list1 if (i+1)%2==0]
print(list2)
10.百钱买百鸡:一只公鸡5元钱,一只母钱3元钱,三只小鸡1元钱,现在用100元钱买100只鸡,问公鸡、母鸡、小鸡各多少只?请利用列表推导式解决该问题。
list1=[cock for cock in range(100) for hen in range(100-cock) if (cock*5+hen*3+(100-cock-hen)/3)==100 ]
list2=[hen for cock in range(100) for hen in range(100-cock) if (cock*5+hen*3+(100-cock-hen)/3)==100 ]
list3=[100-hen-cock for cock in range(100) for hen in range(100-cock) if (cock*5+hen*3+(100-cock-hen)/3)==100 ]
list4=[list1,list2,list3]
for i in range(len(list1)):
print(f'公鸡list4[0][i]只,母鸡list4[1][i]只,小鸡list4[2][i]只')
print(list4)
习 题 5
1.输入一个字符串,将该字符串中下标为偶数的字符组成新串并通过字符串格式化方式显示。
str=input('输入一个字符串')
new_str=''
for i in range(1,len(str),2):
new_str=new_str+str[i]
print(new_str)
2.编写程序,生成一个由15个不重复的大小写字母组成的列表。
import random
list1=[]
i=0
while i<15:
number1=random.randint(ord('A'),ord('Z'))
number2=random.randint(ord('a'),ord('z'))
number3=[number1,number2]
number=random.choice(number)
letter=chr(number)
if letter not in list1:
list1.append(letter)
i=i+1
print(f'list1为list1')
3.给定字符串"site sea suede sweet see kase sse ssee loses”,匹配出所有以s开头、e结尾的单词。
import re
str='site sea suede sweet see kase sse ssee loses'
new_str=''
list1=str.split(' ')
for i in list1:
new_str=new_str+i+' '
new_str=' '+new_str
result=re.findall(r's[a-z]*?e',new_str)
print(f'以s开头,e结尾的单词为result')
4.生成15个包括10个字符的随机密码,密码中的字符只能由大小写字母、数字和特殊字符“@”“$”“#”“&.”“_”“~”构成。
import random
import string
list1 = []
str = string.ascii_letters + string.digits + "@$#&_~"
while len(list1) < 15:
result = [random.choice(str) for i in range(10)]
print(result)
list1.append("".join(result))
print(f'密码为:list1')
5.给定列表x=[“13915556234”,“13025621456”,“15325645124”,“15202362459”],检查列表中的元素是否为移动手机号码,这里移动手机号码的规则是:手机号码共11位数字;以13开头,后面跟4、5、6、7、8、9中的某一个;或者以15开头,后面跟0、1、2、8、9中的某一个。
import re
x=['13915556234','13025621456','15325645124','15202362459']
str=' '+' '.join(x软件设计师教程第5版课后习题答案
软件设计师教程第5版课后答案
软件设计师教程第5版课后习题答案具体对比变化如下:
第4版
第5版
对比变化
第一章
计算机系统知识
第一章
计算机系统知识
无变化
第二章
程序设计语言基础
第二章
程序设计语言基础
无变化
第三章
操作系统知识
第四章
操作系统知识
第5版删减小节:网络与嵌入式操作系统、UNIX操作系统基础知识
第四章
软件工程基础知识
第五章
软件工程基础知识
第5版增加知识点:统一过程(UP)模型、webApp设计
增加小节:系统设计(概要设计和详细设计)
结构化开发方法独立成章节
软件质量管理独立成小节
风险管理并入软件项目管理
第五章
系统开发与运行
第六章
结构化开发方法
需求建模、需求规约与验证、需求管理并入需求工程
第六章
网络与多媒体基础
第十章
网络与信息安全基础
第五版删减小节:多媒体基础(多媒体基本概念、多媒体网络、多媒体计算机系统)
第七章
数据库技术基础
第九章
数据库技术基础
无变化
第八章
数据结构
第三章
数据结构
无变化
第九章
算法设计与分析
第八章
算法设计与分析
第五版增加小节:数据挖掘算法、智能优化算法
分支限界法、概率算法、近似算法独立成小节
第十章
面向对象技术
第七章
面向对象技术
无变化
第十一章
标准化和软件知识产权
第十一章
标准化和软件知识产权
无变化
第十二章
软件系统分析与设计
第十二章
软件系统分析与设计
无变化
以上是关于python程序设计教程(第2版)习题3-习题5代码答案的主要内容,如果未能解决你的问题,请参考以下文章