
PAT刷题
PAT-python3
ohbaby别叫我程序猿
这个作者很懒,什么都没留下…
展开
-
python解题PAT甲级 1011 World Cup Betting
代码】python解题PAT甲级1011WorldCupBetting。原创 2022-07-27 01:38:37 · 282 阅读 · 0 评论 -
python解题PAT甲级 1001 A+B Format
先求和,然后反转字符串,条件满足就加个逗号,最后再反转字符串输出,ok。原创 2022-07-26 01:47:53 · 188 阅读 · 0 评论 -
用pytho来解PAT1057数壹零-20-满分
这题大概看完就能知道怎么做将A-Z和1-16对应,然后遍历输入的字符串,一一相加就ok但是将对应关系用列表或者字典很麻烦,这里推荐可以使用编码代码:str = input().lower()num = 0for i in str: if 'a' <= i <= 'z': num += ord(i) - ord('a') +1l = list(bin(num))if num == 0: print(0,0)else: print(原创 2020-09-27 12:43:17 · 144 阅读 · 0 评论 -
用python来解PAT乙级1054求平均值-20-满分
这题主要在于分辨是不是符合要求的数,这个用异常处理可以简单达到题目简单就直接上代码了:n = int(input())x = list(input().split())num = 0m = 0for i in x: try: j = float(i) if -1000 <= j <= 1000 and round(j,2) == j:#在范围内且最多只有两位小数 num +=j m +=1原创 2020-09-27 11:47:25 · 303 阅读 · 0 评论 -
用python来解PAT乙级1011A+B和C-15-满分
这题也没啥好说的,直接上代码吧:n = input()p = []for i in range(int(n)): l= list(map(int,input().split())) p.append(l)for i in range(int(n)): if p[i][0]+p[i][1] > p[i][2]: print('Case #{}: true'.format(i+1)) else: print('Case #{}:原创 2020-09-04 01:18:10 · 225 阅读 · 0 评论 -
用python来解PAT乙级1063计算谱半径-20-满分
同样的这题没什么好讲的,按照输入求每一个模,然后输出最大的一个就是谱半径代码:from math import sqrtn = int(input())l = []for i in range(n): num = [int(i) for i in input().split()] l.append(sqrt(num[0] ** 2 + num[1] ** 2))#求模,放入列表print('{:.2f}'.format(max(l)))#输出最大模提交结果:...原创 2020-09-04 01:14:33 · 312 阅读 · 0 评论 -
用python来解PAT乙级1043输出PATest-20-满分
这题不难,应该大部分人都能做出来,我这里是因为觉得当某一种字符输出完之后其他的处理的麻烦,所以先对每个字符计数,然后顺序判断,不为0就输出,这样其他的顺序也仍旧不会改变,虽然代码没有很短,但是思路很容易理解和掌握代码:ss = input()P = A = T = e = s = t = 0for i in ss: if i == 'P': P += 1 elif i == 'A': A += 1 elif i == 'T':原创 2020-09-04 01:09:46 · 305 阅读 · 0 评论 -
用python来解PAT乙级1047编程团体赛-20-满分
这题挺简单的,看到题目知道要求队伍的总分再输出最大的队伍和总分看看输入格式就能知道,输入先取编号和成绩,然后编号直接由‘-’得到团队编号,然后直接数据进行处理最后列表中取到最大的值,就ok代码:n = int(input())#参赛人数teams = []#队伍列表grades = []#队伍总分数for i in range(n): nos, grade = input().split()#编号,成绩 grade = int(grade) teamno = no原创 2020-09-04 01:04:51 · 410 阅读 · 0 评论 -
用python来解PAT乙级1088三人行-20-满分
题意给出甲乙丙三人的能力值关系:甲的能力值确定是 2 位正整数;把甲的能力值的 2 个数字调换位置就是乙的能力值;甲乙两人能力差是丙的能力值的 X 倍;乙的能力值是丙的 Y 倍。输入为你的能力值,X,Y输出甲的能力值,以及甲乙丙三人和你的关系(‘ping’=,‘cong’>,‘gai’<)本题先根据X,Y值求出甲乙丙的能力值,因为甲是两位数,这里可以使用两个for循环分别作为十位和个位,进行三人关系的试探,成功放入列表中,因为题目告诉可能答案不唯一,所以甲的能力值取列表最大值,另外列原创 2020-09-04 00:55:42 · 530 阅读 · 0 评论 -
用python来解PAT乙级1026程序运行时间-15-满分
这题不用多介绍了把。。。。除以100就是秒数,对3600取整除就是时,对3600取余再对60取整除就是分,剩下的是秒代码:a , b = map(int,input().split())if a >= b: print('输入错误')else: x = round((b-a)/100) print("%02d:%02d:%02d"% (x//3600, x%3600//60, round(x%60)))提交:......原创 2020-09-04 00:43:25 · 211 阅读 · 0 评论 -
用python来解PAT乙级1055集体照-25-满分(代码简洁注释全)
本题看题目会觉得不知道该怎么下手,分析能把解题步骤想出来,但是代码又会觉得越敲越麻烦作为考试中压轴的题目,这题确实很麻烦先将输入的学生信息排序,然后输出最后一排,输出完最后一排剩下的会很好处理但是将最后一排单拎出来输出又会占去很多行代码可以先创一个用来输出的列表,因为学生信息已经排序好了,直接往列表里添加数据就行,当列表数据到达一排人数时就输出,然后清空,继续添加下一行(第一行也就是最后一排输出完了后面每排人数都相等了)因为最高的站中间,然后先右后左(从你的角度是先左后右),所以往输出列原创 2020-09-04 00:36:39 · 426 阅读 · 0 评论 -
用python来解PAT乙级1049数列的片段和 -20-满分无错误
本题题意很好理解,也能够立马动手,就这样:n = int(input())lst = list(map(float,input().split()))num = 0for i in range(n): num += lst[i]*(i+1)*(n-i)print('%.2f'%(num))但是提交的时候大概都会出现一个错误:因为大家会习惯性的直接使用float,而浮点型计算其实是不准确的所以在这里应该使用decimal类型,附上代码:from decimal imp原创 2020-09-03 21:28:32 · 327 阅读 · 0 评论 -
用python来解PAT 乙级1083是否存在相等的差 - 20 -满分
题意很容易理解,这道题逻辑上可以分成两步来做,先求出所有的差,再输出里面重复过的(差值由大到小)这里所求的差为牌面上面的值与牌序的差代码给出来:n = int(input())#一共多少牌lst = [int(i) for i in input().split()]res = dict()for i in range(n): if abs(lst[i] - (i+1)) in res.keys(): res[abs(lst[i] - (i+1))] += 1#键存原创 2020-09-03 21:29:04 · 346 阅读 · 0 评论 -
用python来解 PAT乙级 1022D进制的A+B -20-满分
作为第二题,本题很简单,因为进制数从低位到高位,每一位都是作为余数存在,所以可以根据这个直接计算代码码上了a,b,jinzhi = map(int,input().split())num = a+bres = []while num>=jinzhi: res.append(str((num%jinzhi)))#余数存进列表,作为低位数 num = num//jinzhires.append(str(num))#最高位数print(''.join(res[::-1])原创 2020-09-02 00:36:57 · 219 阅读 · 0 评论 -
用python来解 PAT乙级1092最好吃的月饼-20-满分
作为第二题,很简单,直接根据输入求最大的销量数,然后输出其对应的月饼种类编号就可直接码代码:n , m =map(int,input().split())#月饼种类数,统计城市数res = [0 for i in range(n)]#先创建一个全为0 的列表 每种月饼销量初始为0for i in range(m):#一边输入一边加 最后就是每种月饼的总销量 num = [int(i) for i in input().split()] for j in range(n):原创 2020-09-02 00:17:49 · 338 阅读 · 0 评论 -
用python来解PAT乙级1042 字符统计-20-满分
看输出规则时,一眼盯住,有并列时输出最小的那个,然后就想到列表的索引,这样一来列表就需要按照字母次序来排列,所以for循环要从小到大来,但是输入中并补包含全部二十六个字母,所以需要创建字典,我不想用字典,所以把二十六个字母都遍历了,0也保存进了列表,用字母和ASCII码转换的函数chr()和ord()可以很简单,输入时直接全部使小写,然后先遍历a到z,统计出现次数放入列表中,直接取最大值,然后最大值的索引+97就是ASCII编码,因为a的编码是97代码超级简单,五行:s = input().low原创 2020-09-01 01:35:55 · 274 阅读 · 0 评论 -
用python来解PAT乙级1066图像过滤-15-满分无超时
题意大概就是给出m*n的像素组,将其中A-B范围内的换成一个指定的像素值,A,B和指定的像素值都在输入的第一行给到,并且输出全部为三位的像素值在接收输入之后,直接开始for循环遍历,然后将A-B范围内的像素值换掉并且全部换成三位数值刚开始我是建了个函数来把数值变成三位字符串,提交发现超时了,代码是这样的:m , n , A , B , change = map(int,input().split())def san(n): if len(str(n)) == 3: re......原创 2020-09-01 01:12:53 · 278 阅读 · 0 评论 -
用python来解PAT乙级1075链表元素分类-25-20分 (有注释)最后一个超时
本题看似繁琐,其实只需要分为两个步骤来做首先按照给定的首个结点坐标和输入的多组数据,来将单链表的顺序给排出来然后根据题意 按照每个结点位置的数值来将单链表分成三个部分:小于0,大于0小于K,大于K最后输出就ok代码如下:import sysfirst , n , k = input().split()n = int(n)k = int(k)addr_data = dict()addr_next = dict()data_shuchu = dict()data_prin原创 2020-09-01 00:24:04 · 415 阅读 · 0 评论 -
用python来解 PAT乙级1089 狼人杀-简单版 -20-满分无超时(带注释)
题意概括,在第i行用正负号+j的形式顺序输入,表示i号对j号的发言,+是好人,-是狼人,输出最小的解告诉大家狼人是哪两个,撒谎的人是一个好人和一个狼人一共两个人,无解输出‘No Solution’所以本题思路可以先假设两只狼,然后看所有人的逻辑是否都行得通,因为多解时是输出最小的解,所以可以直接遍历假设狼的号码,遇到正确解就直接中断并输出代码如下(有注释):n = int(input())s = [int(input()) for i in range(n)] # 将他们说的话放在一个列表原创 2020-08-31 23:36:44 · 1010 阅读 · 0 评论 -
用python来解 PAT1087有多少不同的值-20-满分
根据题意:求当自然数n依次取 1、2、3、……、N时,算式⌊n/2⌋+⌊n/3⌋+⌊n/5⌋有多少个不同的值理清思路,只需要用for循环将每一次的值计算然后放在一起,再输出数据的值的数量就ok,这里可以取巧直接利用集合的去重的特性。代码很简单:n = int(input())res = set()for i in range(1,n+1): res.add(i//2 + i//3 + i//5)print(len(res))......原创 2020-08-24 08:40:22 · 237 阅读 · 0 评论 -
用python来解 PAT1086就不告诉你-15-满分
根据题意就是将输入的两个数的乘积倒过来输出。本题属于五题中的第一题,比较简单,理清思路,可以用列表反转的形式得出结果,也可以直接用切片,当然用切片要更加简单。这里给出切片方法的代码:a, b = [int(x) for x in input().split()]rst = a * bprint(int(str(rst)[::-1]))列表方法也可,只是稍微麻烦些:m,n = map(int,input().split())num = m*nl = list(str(nu.原创 2020-08-24 08:33:58 · 270 阅读 · 0 评论 -
用python来解 PAT乙级1082射击比赛 -20-满分
题意很简单,输入运动员的编号和射出箭的坐标,对比他们到圆心的距离,输出最近的(冠军)和最远的(菜鸟)编号直接用求三角形最长边的计算公式对每一个坐标求距离,先设两个常量分别是0和200(任意设置一个不可能达到的距离就可),然后遍历过程中替代他们,最后输出代码如下:n = int(input())res = '0000 0000'#先定输出结果max_dis = 0min_dis = 200#设置两个边界的常量# num_dis = dict()#也可以用字典for i in range原创 2020-08-31 23:18:33 · 710 阅读 · 0 评论 -
用python来解 PAT乙级1081检查密码-15-满分
题意概括:输入密码判断合法性密码要求:不少于六位,只能含有英文 数字 小数点,并且需要同时包含数字和字母解题思路:直接统计字母 数字 和非法字符或者小数点的数量 就行了代码如下:n = int(input())flag = 0while flag<n: l = input() shuzi = 0 zimu = 0 feifa = 0 for i in range(len(l)): if l[i].isdigit() == T原创 2020-08-31 22:47:25 · 401 阅读 · 0 评论 -
用python来解 PAT乙级1072开学寄语-20-满分
题意大概:给出违禁品编号和每个学生带的物品编号,输出学生所带的违禁品,带违禁品的学生数量以及违禁品总数格式的学生姓名加冒号(:)可以直接自己定下之后再进行判断 直接将违禁物品编号加在后面进行输出然后我是设置变量来统计查缴物品总数,直接将带了违禁品的学生姓名加入列表,输出列表长度n , m = map(int,input().split())#学生数 违禁物品数wu = [i for i in input().split()]#需要被查缴的物品编号res = []x = 0#设置变量来统计原创 2020-08-31 22:40:47 · 264 阅读 · 0 评论 -
用python来解 PAT乙级 1071小赌怡情 -15-满分
根据题意,给出初始筹码,游戏次数,根据每次输入的两个数以及玩家下注是大或小和下注筹码数量来判断输赢且输出直接根据每次输出判断就可,筹码为0时游戏结束,再判断筹码是否足够,赢或是输输出可以用% 或者 format 都可这里给出代码如下:l=list(map(int,input().split()))x,n=l[0],l[1]#初始筹码,游戏次数for i in range(n): l=list(map(int,input().split()))#输入保存进列表 if x&原创 2020-08-31 21:57:08 · 395 阅读 · 0 评论 -
用python来解 PAT 1061判断题-15-满分无超时
根据题意,给出学生人数,判断题个数,判断题每题分数和答案,然后是学生们的答案这题看到题目可以直接开始敲代码,先录人除学生成绩之外的数据,然后根据遍历学生的成绩,对比答案,正确加分,输出总分就ok,当然别忘了在循环里设置一个变量来装分数,代码如下:N,M = map(int,input().split())score = list(map(int,input().split()))key = list(map(int,input().split()))for i in range(N):原创 2020-08-21 16:12:08 · 351 阅读 · 0 评论 -
用python来解 PAT 1060爱丁顿数-25-满分无超时
根据题意,一组数据里面,有N个大于N的数据,求对于一组数据的最大N值题目给出天数和每天的运动里程,第一步应该就是将数据排序,然后直接遍历加切片判断,至于递增还是递减可以思考看看,如果是递增数列,对于其后的数,只能保证是大于等于它的关系,如果同个数值有多个就显得麻烦了,所以我这里用的是递减,然后直接判断前面的数的个数就ok,代码如下:n = int(input())#连续骑车的天数l = [x for x in map(int,input().split())]l.sort()l.revers原创 2020-08-21 16:07:42 · 325 阅读 · 0 评论 -
用python来解 PAT 1050螺旋矩阵-25-满分无超时
根据题意:给定N个整数,按照非递增的顺序填充进m行n列的螺旋矩阵(左上角开始螺旋),要求m,n满足:m×n等于N;m≥n;且m−n取所有可能值中的最小值。先分析,这个题目大概分两个步骤:先求m,n,再进行螺旋填充,我的代码分三步,求出m,n后先生成了一个m行n列的全0矩阵,然后再进行填充。我的求m,n的方法是用的二分法加循环,但是这种方法会超时,因为计算次数太多,所以我改用先求根的方法,比二分法简单太多了,至于生成全0矩阵,两个for循环就ok了,当然也可以直接用列表生成式,最后填充才是最难....原创 2020-08-21 15:57:29 · 420 阅读 · 0 评论 -
用python来解 PAT 1048数字加密-20-满分无超时
题意理解一下,输入两条数字A,B,从各位开始一一对应,奇数位两数相加,对13取余,结果由J代替10,Q代替11,K代替12,然后偶数位由B-A,结果为正直接输出,为负就+10,输出的结果位每一位的结果按照原先的顺序输出。分析一下,为了方便进行一一对应的进行计算,先将A,B倒序,然后根据奇偶进行计算,最后输出结果就行,该题还是比较简单的,但是也要注意有个坑,当A,B长度不一致时,如果A比B长,B需要进行补0操作,如果B更长,对A补0其实就相当于直接输出多余部分。代码如下:A,B=input().原创 2020-08-21 08:43:32 · 408 阅读 · 0 评论 -
用python来解 PAT 1002 写出这个数 -20-满分
去问人体与投入有u早uygi反馈如何搭建元素点击发送语音的体育局人口高峰的几个房间好看的 同仁堂原创 2020-08-20 11:50:28 · 279 阅读 · 0 评论 -
用python来解 PAT 1001 害死人不偿命的(3n+1)猜想-15-满分
题目信息:1001害死人不偿命的(3n+1)猜想(15分)卡拉兹(Callatz)猜想:对任何一个正整数n,如果它是偶数,那么把它砍掉一半;如果它是奇数,那么把(3n+1)砍掉一半。这样一直反复砍下去,最后一定在某一步得到n=1。卡拉兹在 1950 年的世界数学家大会上公布了这个猜想,传说当时耶鲁大学师生齐动员,拼命想证明这个貌似很傻很天真的命题,结果闹得学生们无心学业,一心只证(3n+1),以至于有人说这是一个阴谋,卡拉兹是在蓄意延缓美国数学界教学与科研的进展……我们今天的题......原创 2020-08-20 11:18:48 · 470 阅读 · 0 评论