PTA浙⼤版《Python程序设计》题⽬集答案(四)-第3章-共20道题-1~7题前⾔
如有问题,敬请指正。如有问题,尽⼒解答。交流想法,共同进步。
第三章
第3章-1 3-1.⼤于⾝⾼的平均值 (10分)
中⼩学⽣每个学期都要体检,要量⾝⾼,因为⾝⾼可以反映孩⼦的⽣长状况。现在,⼀个班的⾝⾼已经量好了,请输出其中超过平均⾝⾼的那些⾝⾼。程序的输⼊为⼀⾏数据,其中以空格分隔,每个数据都是⼀个正整数。程序要输出那些超过输⼊的正整数的平均数的输⼊值,每个数后⾯有⼀个空格,输出的顺序和输⼊的相同。
输⼊格式:
在⼀⾏输⼊中⼀个班的⾝⾼值,以空格分隔。
输出格式:
在⼀⾏输出超过输⼊的平均数的输⼊值,以空格分隔。
python格式化输出format
输⼊样例:
在这⾥给出⼀组输⼊。例如:
143 174 119 127 117 164 110 128
输出样例:
在这⾥给出相应的输出。例如:
143 174 164
Heights =list(map(int,input().split()))
average =sum(Heights)/len(Heights)
for height in Heights:
if height > average:
print(height, end=' ')
第3章-2 查验⾝份证 (15分)
⼀个合法的⾝份证号码由17位地区、⽇期编号和顺序编号加1位校验码组成。校验码的计算规则如下:
⾸先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};然后将计算的和对11取模得到值Z;最后按照以下关系对应Z值与校验码M的值:
Z:0 1 2 3 4 5 6 7 8 9 10
M:1 0 X 9 8 7 6 5 4 3 2
现在给定⼀些⾝份证号码,请你验证校验码的有效性,并输出有问题的号码。
输⼊格式:
输⼊第⼀⾏给出正整数N(≤100)是输⼊的⾝份证号码的个数。随后N⾏,每⾏给出1个18位⾝份证号码。
输出格式:
按照输⼊的顺序每⾏输出1个有问题的⾝份证号码。这⾥并不检验前17位是否合理,只检查前17位是
否全为数字且最后1位校验码计算准确。如果所有号码都正常,则输出All passed。
输⼊样例1:
4
320124************
12010X198901011234
110108************
370704************
输出样例1:
12010X198901011234
110108************
370704************
输⼊样例2:
2
320124************
110108************
输出样例2:
All passed
N =int(input())
list_Z =[0,1,2,3,4,5,6,7,8,9,10]# Z值
list_M =['1','0','X','9','8','7','6','5','4','3','2']# 校验码M值
list_ID =[]# 输⼊的⾝份证号
list_weight =[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]# 17位数字权重
list_product =[]# 权重乘积
for i in range(N):# 输⼊⾝份证号
list_ID.append(input())
Sum =0# 前17位数字加权和
z =0
count =0
for i in range(N):
for j in range(17):
if48<=ord(list_ID[i][j])<=57:# 判断⾝份证号的每⼀位是否为数字
list_product.append(int(list_ID[i][j])* list_weight[j])# 加权计算并存⼊L3中
else:
break
if len(list_product)==17:
Sum =sum(list_product)
z = Sum %11
if list_Z.index(z)!= list_M.index(list_ID[i][-1]):
print(list_ID[i])
count +=1
else:
print(list_ID[i])
count +=1
list_product =[]
if count ==0:
print("All passed")
第3章-3 输出字母在字符串中位置索引 (20分)
输⼊⼀个字符串,再输⼊两个字符,求这两个字符在字符串中的索引。
输⼊格式:
第⼀⾏输⼊字符串
第⼆⾏输⼊两个字符,⽤空格分开。
输出格式:
反向输出字符和索引,即最后⼀个最先输出。每⾏⼀个。
输⼊样例:
在这⾥给出⼀组输⼊。例如:
mississippi
s p
输出样例:
在这⾥给出相应的输出。例如:
9 p
8 p
6 s
5 s
3 s
2 s
str1 =input()
s1, s2 =input().split()
str2 = str1[::-1]
L =len(str2)
Count_1 = unt(s1)
Count_2 = unt(s2)
begin =0
for i in range(Count_2):
print(L -1- str2.find(s2, begin), s2)
begin = str2.find(s2, begin)+1
begin =0
for i in range(Count_1):
print(L -1- str2.find(s1, begin), s1)
begin = str2.find(s1, begin)+1
第3章-4 查指定字符 (15分)
本题要求编写程序,从给定字符串中查某指定的字符。
输⼊格式:
输⼊的第⼀⾏是⼀个待查的字符。第⼆⾏是⼀个以回车结束的⾮空字符串(不超过80个字符)。
输出格式:
如果到,在⼀⾏内按照格式“index = 下标”输出该字符在字符串中所对应的最⼤下标(下标从0开始);否则输出"Not Found"。输⼊样例1:
m
programming
输出样例1:
index = 7
输⼊样例2:
a
1234
输出样例2:
Not Found
a =input()
str1 =input()
str2 = str1[::-1]
L =len(str2)
if str2.find(a)==-1:
print("Not Found")
else:
print("index = {}".format(L -1- str2.find(a)))
第3章-5 字符转换 (15分)
本题要求提取⼀个字符串中的所有数字字符(‘0’……‘9’),将其转换为⼀个整数输出。
输⼊格式:
输⼊在⼀⾏中给出⼀个不超过80个字符且以回车结束的字符串。
输出格式:
在⼀⾏中输出转换后的整数。题⽬保证输出不超过长整型范围。
输⼊样例:
free82jeep5
输出样例:
825
a =input()
num =''
for i in a:
if48<=ord(i)<=57:
num += i
print(int(num))
第3章-6 求整数序列中出现次数最多的数 (15分)
本题要求统计⼀个整型序列中出现次数最多的整数及其出现次数。
输⼊格式:
输⼊在⼀⾏中给出序列中整数个数N(0<N≤1000),以及N个整数。数字间以空格分隔。
输出格式:
在⼀⾏中输出出现次数最多的整数及其出现次数,数字间以空格分隔。题⽬保证这样的数字是唯⼀的。输⼊样例:
10 3 2 -1 5 3 4 3 0 3 2
输出样例:
3 4
number =list(input().split())
num =[]# ⽤于存储出现的整数
Count =[]# ⽤于存储整数对应次数
for n in number[1:]:
if n not in num:
num.append(n)
Count.unt(n))
Index = Count.index(max(Count))
print("{} {}".format(num[Index],max(Count)))
第3章-7 求最⼤值及其下标 (20分)
本题要求编写程序,出给定的n个数中的最⼤值及其对应的最⼩下标(下标从0开始)。输⼊格式:
输⼊在第⼀⾏中给出⼀个正整数n(1<n≤10)。第⼆⾏输⼊n个整数,⽤空格分开。
输出格式:
在⼀⾏中输出最⼤值及最⼤值的最⼩下标,中间⽤⼀个空格分开。
输⼊样例:
6
2 8 10 1 9 10
输出样例:
10 2
n =int(input())
num =list(input().split())
for i in range(len(num)):
num[i]=int(num[i])
Max =max(num)
print("{} {}".format(Max, num.index(Max)))
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论