![](https://img-blog.csdnimg.cn/20210712151030561.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
PAT乙级-Python
——南方局部阵雨——
赵书南
sweetzsn.png
展开
-
1034 有理数四则运算 (20分) python
[PAT] 1034 有理数四则运算 (20分) python这个写法比较好 还是用了fraction和def看起来简洁原创 2021-09-06 01:06:37 · 356 阅读 · 0 评论 -
1085单位排行
lambda介绍Python 字典(Dictionary) items()方法Python 字典(Dictionary) get()方法1085单位排行lambda可以解决多要求的排序问题,通过字典的写入以及items的元组返回,控制输出。原创 2021-09-05 22:49:14 · 103 阅读 · 0 评论 -
0905没写完-PAT (Basic Level) Practice Python解法 1083 是否存在相等的差
03没过做个N个列表明显超时 10000个数字肯定不行要改怎么在不用多重列表的情况下链接两个数字,不要再一个排序操作之后就丢失原顺序了(记得index的操作),直觉是链表相关。(睡醒了看,现在脑子不太清醒)n = int(input())ckl = list(map(int,input().split()))new = []otpsz = []#数字otpcs = []#次数otp = []for i in range(n): new.append(abs(ckl[i]-(i+1原创 2021-09-05 03:12:48 · 160 阅读 · 0 评论 -
PAT (Basic Level) Practice Python解法 1020 月饼(正数/正整数)
PAT (Basic Level) Practice Python解法 1020 月饼va, need = map(int,input().split())stock = list(map(float,input().split()))#这里如果是int坑点3会报错,因为是正数,不是正整数sale = list(map(float,input().split()))per = []for i in range(va): dj = float(sale[i]/stock[i]) pe原创 2021-09-05 02:39:21 · 153 阅读 · 0 评论 -
PAT (Basic Level) Practice Python解法 1027 打印沙漏
PAT (Basic Level) Practice Python解法 1027 打印沙漏如果想投机取巧可以直接roll出1000以内的sum直接打入list。i = 1sum = 1lsts = [1]while sum<= 1000: i = i + 2 sum = sum+ i*2 lsts.append(sum)lsts.append(1001)#直接记录了1000以内的所有sum值。cnt, flag = input().split()cnt = i原创 2021-09-05 02:03:27 · 105 阅读 · 0 评论 -
没写完+1010-PAT (Basic Level) Practice Python解法 1005 继续(3n+1)猜想
没写完-PAT (Basic Level) Practice Python解法 1005 继续(3n+1)猜想n = int(input())ckl =list(map(int,input().split()))for hys in ckl: while hys != 1: if hys % 2 == 0: hys = hys / 2 else: hys = (hys * 3 + 1) / 2 if原创 2021-09-04 07:56:32 · 71 阅读 · 0 评论 -
PAT (Basic Level) Practice Python解法 1024 科学计数法(re.split正则多标识符分割)
PAT (Basic Level) Practice Python解法 1024 科学计数法(re.split正则分解)import res = str(input())sf = float(s)a,b,c = re.split('[.|E]',s)#正则多标识符分割if a[0]=='+': flag = ''else: flag = '-'#输出的正负a = a[1]#整数部分if int(c)==0:#指数为0,直接输出原始数字 print(flag,a,'原创 2021-09-04 03:47:54 · 233 阅读 · 0 评论 -
PAT (Basic Level) Practice Python解法 1004 成绩排名(和1028/1004类似/平方**/开方sqrt)
PAT (Basic Level) Practice Python解法 1004 成绩排名(和1028/1004类似/平方/开方sqrt)import sysimport mathn = int(input())low = math.sqrt(2)*100high = 0lowotp = ''highotp = ''for i in range(n): s = sys.stdin.readline() sl = s.split(' ')#py中的平方是**,开方是sqrt原创 2021-09-03 22:02:31 · 82 阅读 · 0 评论 -
可优化-PAT (Basic Level) Practice Python解法 1004 成绩排名(和1028类似/sys/数据筛选/未知数量切片存取)
sys读入的时候会把换行符也读进去1028没想到办法怎么在不产生列表的前提下直接进行未知数量的切片存取,用re可能可以。import sysn = int(input())low = 100high = 0lowotp = ''highotp = ''for i in range(n): s = sys.stdin.readline()#readline的字符串后面跟了一个/n sl = s.split(' ')#先用split做吧 if int(sl[-1])&l原创 2021-09-03 21:49:50 · 69 阅读 · 0 评论 -
PAT (Basic Level) Practice Python解法 1003 我要通过!(正则/re.split/字符串匹配/多标识符切割)
1003 我要通过 python实现import re n=input() for i in range(int(n)): s=input() if re.match(r'A*PA+TA*',s): #在字符串中进行匹配 a=re.split(r'[P|T]',s) #以字符P,T进行分段 if a[0]*len(a[1])==a[2]: #条件判断 print('YES') else: .原创 2021-09-03 21:25:35 · 93 阅读 · 0 评论 -
PAT (Basic Level) Practice Python解法 1040 有几个PAT(find逆序遍历查找/重复计量算法)
PAT (Basic Level) Practice Python解法 1040 有几个PAT(find逆序遍历查找/重复计量算法)import syss = sys.stdin.readline()s = s[s.find('P'):s.find('T',len(s)-1,-1)]#先卡掉开头不是P的,结尾不是T的#字符串反应太快了,截取花的时间超过了测试用例里的无效字符判断时间cnT = 0cnA = 0cnP = 0for i in s[::-1]: if i == 'T':原创 2021-09-03 18:23:11 · 118 阅读 · 0 评论 -
PAT (Basic Level) Practice Python解法 1039 到底买不买(str中replace用法)
存档0009PAT (Basic Level) Practice Python解法 1039 到底买不买(replace用法)import syssale = sys.stdin.readline()goal = sys.stdin.readline()cnt = 0sale1 = salegoal1 = goalfor i in goal: if i in sale1: cnt+=1 sale1 = sale1.replace(i, '',1)#rep原创 2021-09-03 17:37:26 · 74 阅读 · 0 评论 -
PAT (Basic Level) Practice Python解法 1062 最简分数(最简分数判定gcd/分子范围控制)
PAT (Basic Level) Practice Python解法 1062 最简分数(最简分数判定gcd/分子范围控制)import matha, b, fm =input().split(' ')fm = int(fm)a1 = a.split('/')b1 = b.split('/')num1 = int(a1[0])/int(a1[-1])num2 = int(b1[0])/int(b1[-1])if num1>num2: num1,num2 = num2,num1原创 2021-09-02 01:43:44 · 109 阅读 · 0 评论 -
PAT (Basic Level) Practice Python解法 1072 开学寄语
PAT (Basic Level) Practice Python解法 1072 开学寄语stu, things = map(int,input().split())bad = input().split()cntxs = 0cntdx = 0for i in range(stu): info = input().split() kck = [] dx = info[2:]#这个设置真的很有必要,防止我后面颠来倒去看不清楚 for sth in dx:原创 2021-08-31 05:43:23 · 143 阅读 · 0 评论 -
PAT (Basic Level) Practice Python解法 1042 字符统计
PAT (Basic Level) Practice Python解法 1042 字符统计ckl = [0]*26import sysinfo = sys.stdin.readline()info = info.lower()for s in info: if s.islower(): ckl[ord(s)-97]+=1num = ckl.index(max(ckl))print(chr(num+97),max(ckl))原创 2021-08-31 05:20:28 · 148 阅读 · 0 评论 -
炸坑超时 PAT (Basic Level) Practice Python解法 1032 挖掘机技术哪家强(不要连等指向/+=1)
炸坑超时 PAT (Basic Level) Practice Python解法 1032 挖掘机技术哪家强(不要连等指向/+=1)很明显坑点3是因为容器存取超时了,暂时懒得解决了。三分留给10月的我。import sysn=int(input())xxdata = []cjdata = []#不要写连等,会相同指向疯狂报错!!!for i in range(n): info = sys.stdin.readline() school = info[0:info.find("原创 2021-08-31 05:11:52 · 197 阅读 · 0 评论 -
PAT (Basic Level) Practice Python解法 1033 旧键盘打字(str大小写转换判断)
PAT (Basic Level) Practice Python解法 1033 旧键盘打字(str大小写转换判断)bad = input()ckl = input()if ('+' in bad):#大写打不出来 for item in ckl: if (not item.isupper()) and (item.lower() not in bad) and (item.upper() not in bad): print(item,end='')原创 2021-08-31 05:03:25 · 157 阅读 · 0 评论 -
PAT (Basic Level) Practice Python解法 1019 数字黑洞(前导零/sorted)
炸坑 PAT (Basic Level) Practice Python解法 1019 数字黑洞这题还能运行超时,我服了。num = input()if len(set(list(num)))==1: print(num,'-',num,'= 0000')else: cha = '' while cha != "6174": s1 = ''.join(sorted(list(num),reverse=False))#升序 s2 = ''.joi原创 2021-08-30 08:18:21 · 141 阅读 · 0 评论 -
炸坑 PAT (Basic Level) Practice Python解法 1014 福尔摩斯的约会
炸坑 PAT (Basic Level) Practice Python解法 1014 福尔摩斯的约会a = input()b = input()c = input()d = input()for i in range(min(len(a),len(b))): if a[i].isupper() and a[i]==b[i]: days = a[i] cdd = i breakfor i in range(cdd+1,min(len(a),原创 2021-08-30 07:54:56 · 127 阅读 · 0 评论 -
炸坑 PAT (Basic Level) Practice Python解法 1067 试密码(读到特定字符停止/while)
炸坑 PAT (Basic Level) Practice Python解法 1067 试密码(读到特定字符停止/while)很奇怪啊,倒数第二个1分没过去,想不通啊。pw,n = input().split()n = int(n)cnt = 0cklist = []while True: msg = input() if msg != '#': cklist.append(msg) else: breakfor id in range原创 2021-08-30 06:04:25 · 96 阅读 · 0 评论 -
PAT (Basic Level) Practice Python解法 1028 人口普查(年龄比较/sys读取/列表存取/input与列表超时解决办法)
这个题最后一个点会疯狂报错超时,原因有2,一是列表存取,二是输入。#这是第一版本n = int(input())people = []for i in range(n): info = input().split(' ') birth = list(map(int,info[1].split('/'))) people.append([birth, info[0]])for i in range(len(people)-1,-1,-1): if people[i][原创 2021-08-30 04:40:10 · 211 阅读 · 0 评论 -
PAT (Basic Level) Practice Python解法 1029 旧键盘(原顺序输出/大小写转换upper)
PAT (Basic Level) Practice Python解法 1029 旧键盘(原顺序输出/大小写转换upper)old = list(input().upper())new = list(input().upper())oldset = set(old)newset = set(new)bad = oldset-newsetotp = list(bad)otp.sort(key=old.index)#按照原序列原顺序输出for i in otp: print(i,end=原创 2021-08-30 03:22:23 · 102 阅读 · 0 评论 -
3个点超时 PAT (Basic Level) Practice Python解法 1045 快速排序
3个点超时 PAT (Basic Level) Practice Python解法 1045 快速排序n = int(input())otp = []cnt = 0lstin = list(map(int, input().split()))min1 = min(lstin)max1 = max(lstin)if lstin[0] == min1: cnt = cnt+1 otp.append(lstin[0])if lstin[-1] == max1: cnt =原创 2021-08-30 03:00:42 · 194 阅读 · 0 评论 -
PAT (Basic Level) Practice Python解法 1044 火星数字(进制转换的进位问题)
PAT (Basic Level) Practice Python解法 1044 火星数字(进制转换的进位问题)marsg = ['tret', "jan", "feb", "mar", "apr", "may", "jun", "jly", "aug", "sep", "oct", "nov", "dec",'tam']marss = ["tam", 'hel', 'maa', 'huh', 'tou', 'kes', 'hei', 'elo', 'syy', 'lok', 'mer', 'jou']原创 2021-08-30 02:34:41 · 89 阅读 · 0 评论 -
报错来的莫名其妙-PAT (Basic Level) Practice Python解法 1010 一元多项式求导
报错来的莫名其妙-PAT (Basic Level) Practice Python解法 1010 一元多项式求导data = list(map(int,input().split(' ')))ckout = []if len(data)!=0 and data[-1]==0: data.pop() data.pop()#pop()O==1for i in range(len(data)): if i%2 == 0: ckout.append(data[i]*原创 2021-08-29 02:32:06 · 61 阅读 · 0 评论 -
PAT (Basic Level) Practice Python解法 1008 数组元素循环右移问题
PAT (Basic Level) Practice Python解法 1008 数组元素循环右移问题n, move = map(int,input().split())ckl = input().split(' ')move = move%nif move==0: print(' '.join(ckl))else: cknew = ckl[(n-move):]+ckl[:(n-move)] print(' '.join(cknew))...原创 2021-08-29 01:06:39 · 77 阅读 · 0 评论 -
PAT (Basic Level) Practice Python解法 1007 素数对猜想
PAT (Basic Level) Practice Python解法 1007 素数对猜想import mathdef isprime(n): n = int(n) if n==1 or (n!=2 and n%2 == 0): return False if n==2 or n==3: return True prime = True for k in range(3,int(math.sqrt(n)+1),2):原创 2021-08-29 00:57:04 · 108 阅读 · 0 评论 -
可优化-PAT (Basic Level) Practice Python解法 1094 谷歌的招聘(素数判定)
可优化-PAT (Basic Level) Practice Python解法 1094 谷歌的招聘(素数判定)import mathdef isprime(n): n = int(n) if n==1 or (n!=2 and n%2 == 0): return False if n==2 or n==3: return True prime = True for k in range(3,int(math.sqrt(原创 2021-08-29 00:07:26 · 98 阅读 · 0 评论 -
PAT (Basic Level) Practice Python解法 1087 有多少不同的值(循环)
PAT (Basic Level) Practice Python解法 1087 有多少不同的值(循环)n = int(input())otplst = []for i in range(1, n+1):#从1开始算的 k = i//2+i//3+i//5 if (k) not in otplst: otplst.append(k)print(len(otplst))上面的粗糙算法超时了,想了一想发现这个应该是30做一个循环,2*3*5=30最小公倍数。每个循环原创 2021-08-28 20:14:45 · 150 阅读 · 0 评论 -
PAT (Basic Level) Practice Python解法 1086 就不告诉你(list的倒序以及range的逆序遍历判定格式)
PAT (Basic Level) Practice Python解法 1086 就不告诉你(list的倒序以及range的逆序遍历判定格式)a, b = map(int,input().split())k = a*botp = list(str(k))for i in range(len(otp)-1,-1,-1):#list的逆序判定格式 if otp[i]=='0': otp.pop(i) else: breakotp.reverse()fo原创 2021-08-28 18:04:21 · 91 阅读 · 0 评论 -
PAT (Basic Level) Practice Python解法 1061 判断题
PAT (Basic Level) Practice Python解法 1061 判断题n, m = input().split()weight = list(map(int,input().split(' ')))right = list(map(int,input().split(' ')))cklist = []otplst = []for i in range(int(n)): cklist.append(list(map(int,input().split(' '))))f原创 2021-08-26 22:24:26 · 124 阅读 · 0 评论 -
PAT (Basic Level) Practice Python解法 1063 计算谱半径
PAT (Basic Level) Practice Python解法 1063 计算谱半径import mathn = int(input())pbj = []for i in range(n): a,b = map(int,input().split()) pbj.append(math.sqrt(a*a+b*b))print("{:.2f}".format(max(pbj)))原创 2021-08-25 17:09:01 · 90 阅读 · 0 评论 -
PAT (Basic Level) Practice Python解法 1064 朋友数
PAT (Basic Level) Practice Python解法 1064 朋友数n = int(input())frlist = input().split(' ')otplst = []numid = [0]*37for num in frlist: numid[(sum(list(map(int,list(num)))))] = sum(list(map(int,list(num))))for ans in numid:#本来想用01判定但是好像报错了 if ans原创 2021-08-25 17:03:46 · 144 阅读 · 0 评论 -
存档没写完 1065 单身狗
存档没写完 1065 单身狗n = int(input())cplist = []single = []dsgcnt = 0for i in range(n): a,b = input().split() cplist.append(a) cplist.append(b)total = int(input())check = input().split(' ')for per in check: if per not in cplist: s原创 2021-08-25 16:43:30 · 38 阅读 · 0 评论 -
PAT (Basic Level) Practice Python解法 1081 检查密码
PAT (Basic Level) Practice Python解法 1081 检查密码n = int(input())cklist = []for i in range(n): cklist.append(input()) for ck in cklist: if len(ck)<6: print("Your password is tai duan le.") else: inv = num = alp = poi = 0原创 2021-08-24 17:08:33 · 89 阅读 · 0 评论 -
PAT (Basic Level) Practice Python解法 1057 数零壹(进制转换)
PAT (Basic Level) Practice Python解法 1057 数零壹sample = input()cnt = 0otp = 0for i in sample: if ord(i) in range(65,91): otp = otp+ord(i)-64 cnt = cnt+1 elif ord(i) in range(97,123): otp = otp+ord(i)-96 cnt = cnt +原创 2021-08-23 19:17:32 · 82 阅读 · 0 评论 -
PAT (Basic Level) Practice Python解法 1056 组合数的和
PAT (Basic Level) Practice Python解法 1056 组合数的和data = list(map(int,input().split()))data.pop(0)otplst = []for i in data: for k in data: if i != k: otplst.append(int(i*10+k))print(sum(otplst))原创 2021-08-23 19:00:10 · 102 阅读 · 0 评论 -
PAT (Basic Level) Practice Python解法 1053 住房空置率(百分数输出)
PAT (Basic Level) Practice Python解法 1053 住房空置率n, yz, days = input().split(' ')#直接这样写可以一一对应house = []may = emp = 0n, days = map(int,(n,days))yz =float(yz)for i in range(n): house.append(list(map(float,input().split(' '))))for per in house: ck原创 2021-08-23 18:09:17 · 101 阅读 · 0 评论 -
PAT (Basic Level) Practice Python解法 1041 考试座位号(for的及时终止与list里的pop抛出index/remove删除value)
PAT (Basic Level) Practice Python解法 1041 考试座位号(for的及时终止与list里的pop抛出index/remove删除value)n = int(input())sample = []otplst = []for i in range(n): sample.append(input().split(' '))count = int(input())cklist = input().split(' ')#for item in sample:原创 2021-08-23 17:14:59 · 87 阅读 · 0 评论 -
PAT (Basic Level) Practice Python解法 1031 查验身份证(for里的else与缩进逻辑)
PAT (Basic Level) Practice Python解法 1031 查验身份证(for里的else与缩进逻辑)n = int(input())sample = []otplst = []#不符合要求的身份证cklist = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]#权重listM = [1,0,'X',9,8,7,6,5,4,3,2]#校验码listfor num in range(n): sample.append(input())f原创 2021-08-23 16:52:50 · 149 阅读 · 0 评论