浙⼤PTA-Python题库编程题第三章(3-1~3-22)题解
注:第七章只有⼀道题,因为正则表达式学校尚不要求我就还没看,所以这道题解的链接是另⼀个⼤佬的
题⽬列表
3-1 ⼤于⾝⾼的平均值
中⼩学⽣每个学期都要体检,要量⾝⾼,因为⾝⾼可以反映孩⼦的⽣长状况。现在,⼀个班的⾝⾼已经量好了,请输出其中超过平均⾝⾼的那些⾝⾼。程序的输⼊为⼀⾏数据,其中以空格分隔,每个数据都是⼀个正整数。程序要输出那些超过输⼊的正整数的平均数的输⼊值,每个数后⾯有⼀个空格,输出的顺序和输⼊的相同。
输⼊格式:
在⼀⾏输⼊中⼀个班的⾝⾼值,以空格分隔。
输出格式:
在⼀⾏输出超过输⼊的平均数的输⼊值,以空格分隔。
输⼊样例:
在这⾥给出⼀组输⼊。例如:
143 174 119 127 117 164 110 128
输出样例:
在这⾥给出相应的输出。例如:
143 174 164
题解
peplist=list(map(eval,input().split()))
aver=sum(peplist)/len(peplist)
for i in peplist:
if i>aver:
print(i,end=' ')
3-2 查验⾝份证
⼀个合法的⾝份证号码由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
现在给定⼀些⾝份证号码,请你验证校验码的有效性,并输出有问题的号码。lambda编程
输⼊格式:
输⼊第⼀⾏给出正整数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
题解
weight=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]
Mlist=["1","0","X","9","8","7","6","5","4","3","2"]
unpassset=set()
N=eval(input())
numlist=[input()for i in range(0,N)]
for i in range(0,N):
sum=0
for j,k in enumerate(numlist[i][:-1]):
if k.isdigit()!=True:
unpassset.add(numlist[i])
break
sum+=eval(k)*weight[j]
if Mlist[sum%11]!=numlist[i][-1]:
unpassset.add(numlist[i])
if len(unpassset)==0:
print("All passed")
else:
for i in numlist:
if i in unpassset:
print(i)
3-3 输出字母在字符串中位置索引
输⼊⼀个字符串,再输⼊两个字符,求这两个字符在字符串中的索引。输⼊格式:
第⼀⾏输⼊字符串
第⼆⾏输⼊两个字符,⽤空格分开。
输出格式:
反向输出字符和索引,即最后⼀个最先输出。每⾏⼀个。
输⼊样例:
在这⾥给出⼀组输⼊。例如:
mississippi
s p
输出样例:
在这⾥给出相应的输出。例如:
9 p
8 p
6 s
5 s
3 s
2 s
题解
str=input()
char1,char2=input().split()
num1,num2=0,0
for index,char in enumerate(reversed(str)):
if char==char1 or char==char2:
print("{} {}".format(len(str)-index-1,char))
3-4 查指定字符
本题要求编写程序,从给定字符串中查某指定的字符。
输⼊格式:
输⼊的第⼀⾏是⼀个待查的字符。第⼆⾏是⼀个以回车结束的⾮空字符串(不超过80个字符)。
输出格式:
如果到,在⼀⾏内按照格式“index = 下标”输出该字符在字符串中所对应的最⼤下标(下标从0开始);否则输出"Not Found"。输⼊样例1:
m
programming
输出样例1:
index = 7
输⼊样例2:
a
1234
输出样例2:
Not Found
题解
char=input()
strinput=input()
print("index = {:d}".format(strinput.rfind(char)))if strinput.rfind(char)!=-1else print('Not Found')
3-5 字符转换
本题要求提取⼀个字符串中的所有数字字符(‘0’……‘9’),将其转换为⼀个整数输出。
输⼊格式:
输⼊在⼀⾏中给出⼀个不超过80个字符且以回车结束的字符串。
输出格式:
在⼀⾏中输出转换后的整数。题⽬保证输出不超过长整型范围。
输⼊样例:
free82jeep5
输出样例:
825
题解
strinput=input()
numlist=[]
for i in strinput:
if i.isdigit():
numlist.append(i)
print(int("".join(numlist))
3-6 求整数序列中出现次数最多的数
本题要求统计⼀个整型序列中出现次数最多的整数及其出现次数。
输⼊格式:
输⼊在⼀⾏中给出序列中整数个数N(0<N≤1000),以及N个整数。数字间以空格分隔。
输出格式:
在⼀⾏中输出出现次数最多的整数及其出现次数,数字间以空格分隔。题⽬保证这样的数字是唯⼀的。输⼊样例:
10 3 2 -1 5 3 4 3 0 3 2
输出样例:
3 4
题解
numlist=list(map(eval,input().split()))
maxnum,maxcount=numlist[1],unt(numlist[1])
for i in numlist[2:]:
unt(i)>maxnum):
maxnum,maxcount=unt(i)
print(maxnum,maxcount)
3-7 求最⼤值及其下标
本题要求编写程序,出给定的n个数中的最⼤值及其对应的最⼩下标(下标从0开始)。
输⼊格式:
输⼊在第⼀⾏中给出⼀个正整数n(1<n≤10)。第⼆⾏输⼊n个整数,⽤空格分开。
输出格式:
在⼀⾏中输出最⼤值及最⼤值的最⼩下标,中间⽤⼀个空格分开。
输⼊样例:
6
2 8 10 1 9 10
输出样例:
10 2
题解
n=input()
numlist=list(map(eval,input().split()))
print(max(numlist),numlist.index(max(numlist)))
3-8 字符串逆序
输⼊⼀个字符串,对该字符串进⾏逆序,输出逆序后的字符串。
输⼊格式:
输⼊在⼀⾏中给出⼀个不超过80个字符长度的、以回车结束的⾮空字符串。
输出格式:
在⼀⾏中输出逆序后的字符串。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。