PAT 乙级中文(Basic Level) Practice
文章平均质量分 79
PAT乙级中文的训练答案,希望能帮助到你,尽快会在一周内更新完毕
XiLong Liu
技术栈 Vue3\Rust\linux图形图像子系统\xwayland-glamor。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Python3 PAT (Basic Level) 【乙级】 -1043 输出PATest
原题链接题目思路:1.字符串处理,去掉PATest以外字符2.建立集合,计算所有PATest字符数量3.按顺序输出字符import reif __name__ == '__main__': sentence = input() sentence=''.join(re.split(r'[^PATest]', sentence)) set_sentence={'P':0,"A":0,"T":0,'e':0,'s':0,'t':0} for x in sentence:原创 2020-09-09 23:58:50 · 209 阅读 · 0 评论 -
Python3 PAT (Basic Level) 【乙级】 -1042 字符统计
原题链接题目思路:1.将字符串中字母全变为大写2.提取字符中所有字母3.将字符串纳入集合set_sentence中,以避免重复检索4.根据集合开始遍历,利用str.count()查import resentence = input()sentence=sentence.upper()sentence=''.join(re.split(r'[^A-Za-z]', sentence))#利用正则表达式,把set_sentence=set(sentence)#创建集合max_num=0re原创 2020-09-09 23:19:19 · 273 阅读 · 0 评论 -
Python3 PAT (Basic Level) 【乙级】 -1041 考试座位号
原题链接题目思路 将学生序号做成字典即可 dic[试机号] = {“学号 考试座位号”} n = int(input()) students={} result=[] for i in range(n): id,sj,ks=input().split() students[sj]=id+' '+ks m = int(input()) sj = input().split() for s in sj: p原创 2020-09-08 21:36:54 · 173 阅读 · 0 评论 -
Python3 PAT (Basic Level) 【乙级】 -1038 统计同成绩学生
原题链接存在超时,但是利用python函数可以写的非常简洁n=int(input())grades = input().split()find_grades = input().split()find_grades=find_grades[1:]result=[]for x in find_grades: result.append(str(grades.count(x)))print(" ".join(result))...原创 2020-09-08 01:00:47 · 165 阅读 · 0 评论 -
Python3 PAT (Basic Level) 【乙级】 -1036 跟奥巴马一起编程
原题链接这里注意一定不能用round函数进行舍入,涉及银行家算法。后续算法题要记一下四舍五入的写法。 n,c=input().split() m=int(int(n)*0.5 + 0.5) width='' lenth='' for i in range(int(n)): width+=c lenth=c+width[1:-1].replace(c," ")+c for j in range(m): if j==0原创 2020-09-08 00:47:05 · 159 阅读 · 0 评论 -
Python3 PAT (Basic Level) 【乙级】 -1032 挖掘机技术哪家强
原题链接ps:一下三种代码均在最后一个检查点超时,估计也是python特性了,希望有能力的大佬能交流个不超时的方法。最后 第一种和第二种 分别是对字典的一种排序,有兴趣的可以看一看。 n = int(input()) grade = {} for i in range(n): number, fen = input().split() if number not in grade.keys(): grade[number]原创 2020-09-08 00:03:01 · 248 阅读 · 5 评论 -
Python3 PAT (Basic Level) 【乙级】 -1031 查验身份证
原题链接题目思路:主要是规范格式,注意代码段中注释的state参数,会影响第三个测试点。 M =[1,0,'X', 9 ,8, 7, 6, 5, 4 ,3 ,2] #检测值 weight = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]#权重 n=int(input()) result=[] #有问题的身份id列表 for i in range(n): check = 0 id = input()原创 2020-09-07 23:06:37 · 263 阅读 · 0 评论 -
Python3 PAT (Basic Level) 【乙级】 -1029 旧键盘
原题链接本题因为要求要按发现顺序输出,所以不能使用集合。a = input()b = input()#全部转换为大写a = a.upper()b = b.upper()result=[]#判定a中字符b中是否存在for x in a: if x not in b and x not in result: result.append(x)for i in result: print(i,end='')...原创 2020-09-07 20:50:10 · 221 阅读 · 0 评论 -
Python3 PAT (Basic Level) 【乙级】 -1028 人口普查
原题链接最后一个检查点超时这里有一个小发现,python可以直接比较日期,真的顶。 n=int(input()) count=0 oldest_name = '' youngest_name = '' oldest_date = '2014/09/06' youngest_date = '1814/09/06' for i in range(n): name,date = input().split() if date原创 2020-09-07 19:41:51 · 194 阅读 · 0 评论 -
Python3 PAT (Basic Level) 【乙级】 -1023 组个最小数
原题链接题目思路如代码段的注释所写,本题唯一要注意的是,不能以print(str(i),end=’’)代码中的代替result=result+str(i),必须返回一个对象值,不然会报非零返回。count = input().split()result=''for i in range(10): count[i]= int(count[i])if count[0] == 0: #------当0个数为0直接按从小到大顺序输出------ for i in range(1,10)原创 2020-09-07 19:41:31 · 121 阅读 · 0 评论 -
Python3 PAT (Basic Level) 【乙级】 - 1021 个位数统计
原题链接count = [0,0,0,0,0,0,0,0,0,0] #预备好0~9计数列表 n=int(input())for i in str(n): #遍历字符串 并进行计数 count[int(i)]+=1for i in range(10): if count[i]!=0: print(str(i)+":"+str(count[i]))原创 2020-09-07 19:41:07 · 154 阅读 · 0 评论 -
Python3 PAT (Basic Level) 【乙级】 - 1018 锤子剪刀布(18)
原题链接思路, 这里的代码 我用字典做的,个人认为对python初学的朋友,应该是有帮助的,相信大家一路走来用列表都用吐了。美中不足的是最后一个检查点我是超时的,望后续满分同学不吝赐教,非常感谢。A = {'B':0,'C':0,'J':0} #B胜 、 C胜 、 J胜B = {'B':0,'C':0,'J':0}def rule(a, b, tie_num): if a==b: tie_num+=1 elif a == 'J' and b== 'C' :原创 2020-09-02 22:56:34 · 216 阅读 · 0 评论 -
Python3 PAT (Basic Level) 【乙级】 - 1017 A除以B
原题链接没什么具体要说的 注意Q=A//B 取整除就行了A, B = input().split()A = int(A)B = int(B)R = A % BQ = A//Bprint(Q, R)原创 2020-08-25 16:49:18 · 171 阅读 · 0 评论 -
Python3 PAT (Basic Level) 【乙级】 - 1016 部分A+B
原题链接做题思路:题目不难,利用count函数,数一数A中有几个Da,然后用循环以字符的形式直接拼接在一起,然后转换成数字就行,注意如果是空字符串,将它设为0即可A,Da,B,Db=input().split()Pa=''Pb=''for x in range(str(A).count(Da)): Pa+=Dafor x in range(str(B).count(Db)): Pb += Dbif Pa=='': Pa='0'if Pb=='': Pb='0原创 2020-08-25 16:32:36 · 201 阅读 · 0 评论 -
Python3 PAT (Basic Level) 【乙级】 - 1011 A+B 和 C
原题链接 n = int(input()) for i in range(n): a,b,c = input().split() a=int(a) b=int(b) c=int(c) if a+b >c: print("Case #"+str(i+1)+": true") else: print("Case #" + str(i + 1) +原创 2020-08-25 10:35:46 · 145 阅读 · 0 评论 -
Python3 PAT (Basic Level) 【乙级】题目索引汇总贴(更新中)
最近打算复习和强化自己的Python,本贴会尽量在三天内更新完成。感谢你的浏览,希望能对你的学习起到帮助。如果你有疑问或者更好的建议,可以留言讨论,大家共同进步。标号标题1001害死人不偿命的(3n+1)猜想 (15分)1002写出这个数 (20分)1003我要通过! (20分) 1004成绩排名 (20分)1005继续(3n+1)猜想 (25分)1006换个格式输出整数 (15分)1007素数对猜想 (20分)1008数组原创 2020-08-25 10:28:08 · 235 阅读 · 0 评论 -
Python3 PAT (Basic Level) 【乙级】 - 1003 我要通过
原题链接解题思路:相信很多朋友和我一样,在读懂题意上就碰了一鼻子灰。我会尽量细则的讲解题意,题意如下。1.字符串中必须仅有 P、 A、 T这三种字符,不可以包含其它字符;(这个很好理解,不多赘述)2.任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串;(这则内容实际非常关键,它透露了两个信息,"PAT"是通过的,“aPATb” 中左右两边的字符串a与字符串b中 “A” 字符的数量相等时,是通过的)3.如果 aPbTc 是通过的,那么原创 2020-08-25 05:24:41 · 290 阅读 · 0 评论 -
Python3 PAT (Basic Level) 【乙级】 - 1010 一元多项式求导
原题链接解题思路:首先,我在理解题目上,就遇到了困难。本题要求输入 一串偶数数列,以表示多项式非零项系数和指数也就是说 以 a b c d…的数列来表示 a*x^b + c *x^d …然后输出每一项 导数的系数与指数。弄清楚了输入,输出,题目本身就不难了,将列表中的数两个两个的处理即可。注意遇到指数为零的项直接忽略跳过。再一个需要注意的就是"零多项式"要输出为 “0 0”。小技巧分享:如果有阅读借鉴过我前面几题做法的朋友们,一定都熟悉我是怎么处理结尾不能有空格。现在我建议大家使原创 2020-08-25 03:07:29 · 241 阅读 · 0 评论 -
Python3 PAT (Basic Level) 【乙级】 - 1009 说反话
原题链接通过reversed进行反序遍历就行了,注意调整语句格式,以免不能过。注意:reversed()返回的是一个迭代器对象。所以不能写成 a=reversed(a)的形式。这里对上面那句话仍然有疑问的可以百度:“object of type ‘list_reverseiterator’ has no len()”这个报错sentence = input().split()result = ''for word in reversed(sentence): if result!=""原创 2020-08-25 01:28:13 · 215 阅读 · 0 评论 -
Python3 PAT (Basic Level) 【乙级】 - 1008 数组元素循环右移问题
原题链接这一题思路非常简单。核心代码就一句话:num = num[n-m:]+num[:n-m]即 将 1 2 3 4 | 5 6中 的56 “加” 到 1234 的前面即可n,m = input().split()n=int(n)m=int(m)num = list(input().split())num = num[n-m:]+num[:n-m]for x in range(len(num)): if x != len(num)-1: prin原创 2020-08-25 01:12:38 · 179 阅读 · 2 评论 -
Python3 PAT (Basic Level) 【乙级】 - 1007 素数对猜想
原题链接import mathdef tell_prime_number(number): if number > 1: for i in range(2, int(math.sqrt(number)+1)): if (number % i) == 0: return False else: return Truenum = int(input())count = 0f原创 2020-08-25 00:47:24 · 205 阅读 · 0 评论 -
Python3 PAT (Basic Level) 【乙级】 - 1006 换个格式输出整数
原题链接注意 print(’ ‘,end=’ ')的使用就行了以下这个博客写的非常好,大家可以学习一下。PTA中提交Python3程序的一些套路num=int(input())for i in range(int(num/100)): print("B",end='')num=num%100for i in range(int(num/10)): print("S",end='')num=num%10for i in range(num): print(i+1,en原创 2020-08-25 00:14:40 · 144 阅读 · 0 评论 -
Python3 PAT (Basic Level) 【乙级】 - 1005 继续(3n+1)猜想
原题链接解体思路:这一题非常适合用集合运算来做,设我们一开始输入的数字集合为y,因为通过关键数运算出来的数字所组成的集合x,y-x 即 我们所需要的关键数。这一题我的各种类型转换,我认为应该是冗余了,希望各位大牛若有更好的解法,务必留言以供学习,非常感谢。n = int(input())s = set()num = set(input().split())for a in num: a = int(a) while a != 1: if a % 2 == 0:原创 2020-08-24 23:59:19 · 551 阅读 · 0 评论 -
Python3 PAT (Basic Level) 【乙级】 - 1004 成绩排名
原题链接我这一题存在一定遗憾,方法很暴力很low,每输入一个,就比较一次,记录最高分与最低分。然后直接暴力检索事先准备好的 list表,找到对应分数,然后输出。希望有大牛能写出更优雅的解法,请不吝赐教,非常感谢!num = int(input())list1 = []high = 0low = 100high_student=''low_student=''for x in range(num) : x = list(input().split()) if int(x[2])原创 2020-08-24 22:55:02 · 216 阅读 · 0 评论 -
Python3 PAT (Basic Level) 【乙级】 - 1002 写出这个数
原题链接算法题除了了逻辑。处理输入输出也很重要。原题要求最后一个字符串后不能有空格。这里我是做判断处理,算是我个人的一个习惯,有更简洁写法的,请不吝赐教,非常感谢。a=list(input())list =['ling','yi','er','san','si','wu','liu','qi','ba','jiu']sum = 0sum = int(sum)for x in a: x = int (x) sum = sum + xsum=str(sum)for num in原创 2020-08-24 20:58:36 · 198 阅读 · 1 评论 -
Python3 PAT (Basic Level) 【乙级】 - 1001害死人不偿命的(3n+1)猜想
原题链接判断奇偶性,根据判断结果分类处理。a = input()a =int(a)count = 0while a != 1: if a%2==0: a=a/2 count = count +1 else : a=3*a+1 a=a/2 count = count +1print(count)原创 2020-08-24 20:54:37 · 195 阅读 · 0 评论
分享