#pat习题网址 https://pintia.cn/problem-sets/1111652100718116864/problems/type/1
浙大python习题第3章1.输出大于平均数的数.py题源来自pta 没有读者验证码,只是验证了一些数据
本文适合新手小白,需要看pat原题的可以登录上面的网站看,后面的习题在持续更新中…
#中小学生每个学期都要体检,要量身高,因为身高可以反映孩子的生长状况。
# 现在,一个班的身高已经量好了,请输出其中超过平均身高的那些身高。
# 程序的输入为一行数据,其中以空格分隔,每个数据都是一个正整数。
# 程序要输出那些超过输入的正整数的平均数的输入值,每个数后面有一个空格,
# 输出的顺序和输入的相同。
a=list(map(int,input().split()))
b=sum(a)/len(a) #求平均数
for i in a:
if i>=b:
print(i,end=' ') #每一个输出的i之后,还会执行end后面的内容''之间有一个空格,使输出的每个数分开
浙大python习题第3章2.查身份证是否正确.py
#一个合法的身份证号码由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=int(input())
w=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]
s=0
dic={0:'1',1:'0',2:'x',3:'9',4:'8',5:'7',6:'6',7:'5',8:'4',9:'3',10:'2'}
#建立一个字典用于存放z值和校验码
for i in range(n):
r=[]
m=input()
if not m[0:17].isdigit():
print(m)
s+=1
else:
for k in range(17): #查找第17位
r.append(w[k]*int(m[k]))
if dic[sum(r)%11]!=m[17]:
print(m)
s+=1
if s==0:
print("All passed")
浙大python习题第3章3.求字符索引.py
#输入一个字符串,再输入两个字符,求这两个字符在字符串中的索引。
s=input() #输入字符串
a,b=input().split() #输入字符
for i in range(len(s)-1,-1,-1): #倒着遍历字符串,为什么要倒着,因为题目要求
if s[i]==a or s[i]==b:
print(i,s[i]) #输出下标和字母
浙大python习题第3章4.查找指定字符.py
#本题要求编写程序,从给定字符串中查找某指定的字符。
#输入的第一行是一个待查找的字符。第二行是一个以回车结束的非空字符串(不超过80个字符)。
#如果找到,在一行内按照格式“index = 下标”输出该字符在字符串中所对应的最大
# 下标(下标从0开始);否则输出"Not Found"。
a=input()
b=input()
for i in range(len(b)-1,-1,-1): #也可以用 range(0,len(b),1)
if b[i]==a:
print(f'index={i}') #下标是从0开始的
break
if i==0:
print('Not Found')
浙大python习题第3章5.提取数字.py
#提取一个字符串中的所有数字字符(‘0’……‘9’),将其转换为一个整数输出。
#输入样例:free82jeep5 输出样例:825
#法1:
n = input()
s =" " #用于放字符
for i in n:
if i>='0' and i<= '9': #判断是否为数字
s+=i #以字符形式相加
print(int(s))
#法2:
# m=input()
# n=[] #用于放字符
# for i in m:
# if i>='0' and i<='9': #判断是否为数字
# n.append(int(i)) #列表追加
# print(sum(n))
#法3:
# print(int(''.join([i for i in input() if i.isdigit()]))+1)
浙大python习题第3章6.求出现次数最多的数.py
#统计一个整型序列中出现次数最多的整数及其出现次数。
a=input().split()
e=a[1:int(a[0])+1]
b=set(e)
c=0
for i in b:
d=e.count(i)
if d>c:
c=d
m=i
print(m,c)
浙大python习题第3章7.找最大值及其下标.py
#输入格式: #输入在第一行中给出一个正整数n(1浙大python习题第3章8.输出字符串逆序.py #输入格式: #输入在一行中给出一个不超过80个字符长度的、以回车结束的非空字符串。 #输出格式: #在一行中输出逆序后的字符串。 n=input() print(n[::-1])浙大python习题第3章9.挑出16进制转换成10进制.py#输入一个以#结束的字符串,本题要求滤去所有的非十六进制字符(不分大小写), # 组成一个新的表示十六进制数字的字符串,然后将其转换为十进制数后输出。 # 如果在第一个十六进制字符之前存在字符“-”,则代表该数是负数。 str1 = input() s = '1234567890abcdefABCDEF' c = "" for item in str1: if item in s: c = c + item if c == '': print('0') elif str1.find(c[0])>str1.find('-'): print(-int(c,16)) else: print(int(c,16))浙大python习题第3章10.求大写的辅音字母个数.py#英文辅音字母是除A、E、I、O、U以外的字母。本题要求编写程序, #统计给定字符串中大写辅音字母的个数。 a=input() b=['A','E','I','O','U'] count=0 for i in a: if i.isupper() and i not in b: #isupper()检查字母大写 count+=1 print(count)浙大python习题第3章11.字符串排序.py#按首字母排序 a = input().split() l = [] for i in a: l.append(i) #追加 l.sort() #排序 for j in l: #按格式输出 print(j) #print(*l)可代替第二个for浙大python习题第3章12求整数位数及其和.py# #对于给定的正整数N,求它的位数及其各位数字之和。 n = int(input()) s = 0 m = str(n) #转换成字符串是为了方便求长度 for i in m: #遍历m这个字符串 s = s + int(i) print(len(m),s) # print(sum([int(i) for i in input()]))浙大python习题第3章13.$字符对应替换.py#替换大写字母,A->Z,B->Y..... b='ABCDEFGHIJKLMNOPQRSTUVWXYZ' c=b[::-1] #把b逆序 a=''.maketrans(b,c) #.maketrans(b,c)表示用c替换b x=input() print(x.translate(a))浙大python习题第3章14.字符大小写转换.py#对一个以“#”结束的字符串,将其小写字母全部转换成大写字母, # 把大写字母全部转换成小写字母,其他字符不变输出。 s=input() s=s.replace('#','') #题目要求不能输出#,这里replace函数用空格把#替换了 print(s.swapcase()) #swapcase函数用于大小写转换浙大python习题第3章15.统计单词个数.py#统计一行字符中单词的个数。所谓“单词”是指连续不含空格的字符串, # 各单词之间用空格分隔,空格数可以是多个。 l=list(input().split()) #把文本变成列表 print(len(l)) #len()函数用于输出字符串,列表,字典,元组长度浙大python习题第3章16.删除重复字符.py#将给定字符串去掉重复的字符后,按照字符ASCII码顺序从小到大排序后输出。 l=list(set(input())) #用集合去掉重复元素,再把数据存入列表 l.sort() #对列表升序排列 print(''.join(l)) #join用于将列表转换为字符串浙大python习题第3章17.删指定字符.py#输入一个字符串 str,再输入要删除字符 c, # 大小写不区分,将字符串 str 中出现的所有字符 c 删除。 s = list(input().strip()) d = input().strip() n=[] #创建列表 for i in s: if d.upper() !=i and d.lower()!=i: n.append(i) #upper用于小写转大写,lower用于大写转小写 #appen用于把i元素追加到列表后面 print("result:",''.join(n)) #用append输出的是一个list,要用join转换浙大python习题第3章18.挑10个不重复的字母.py#随机输入一个字符串,把最左边的10个不重复的英文字母(不区分大小写)挑选出来。 # 如没有10个英文字母,显示信息“not found” str = input() arr = "" #创建一个字符串 for i in str: if i.upper() and i.lower() not in arr and i.isalpha(): arr += i #isalpha()保证挑选出来的是字母而不是空格或数字 if len(arr) < 10: print("not found") else: print(arr[:10])浙大python习题第3章19.找最长的字符串.py#输入格式: # 输入第一行给出正整数N;随后N行,每行给出一个 # 长度小于80的非空字符串,其中不会出现换行符,空格,制表符。 # 输出格式: # 在一行中用以下格式输出最长的字符串: # The longest is: 最长的字符串 # 如果字符串的长度相同,则输出先输入的字符串。 a= int(input()) c='' for i in range(a): #遍历a中的一堆字符串 b=input() if len(b) > len(c): #如果b比c长就把b赋值给c c=b print('The longest is:',c浙大python习题第3章20.输出逆序的三位数.py#程序每次读入一个正3位数,然后输出按位逆序的数字。 # 注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7。 a=list(input()) print(int("".join(a[::-1]))) #[::-1]表示把列表a的元素倒着复制一遍浙大python习题第3章21.判断回文字符.py#输入一个字符串,判断该字符串是否为回文。 # 回文就是字符串中心对称,从左向右读和从右向左读的内容是一样的 a=input() print(a) #题目要求要把输入的字符串再输出一遍 print('Yes') if a==a[::-1] else print('No') #当a==a[::-1]时为回文浙大python习题第3章22.顺序输出大写字母.py#顺序输出给定字符串中所出现过的大写英文字母, #每个字母只输出一遍;若无大写英文字母则输出“Not Found” #顺序输出给定字符串中所出现过的大写英文字母 a=list(input()) #将输入的字符串转换为列表,之后就可以以长度是否大于0作为输出条件 b=[] #定义一个列表用来放大写字母 for n in a: if n.isupper() and n not in b: #isupper()用于检查字母是否大写 b.append(n) #追加 if len(b)>0: print(''.join(b)) else: print('Not Found')



