本文用于记录PAT乙级刷题过程中的一些笔记,包括但不限于:卡了好久终于找到的bug,绕了远路写了一大段其实完全可以用一个函数代替,以及看了别人的代码后醍醐灌顶的知识点,方便后续回顾避坑,也希望能对你有所帮助~
同时整个题库刷下来,有一些题意完全可以当作“八股文”,整理在规则里,相当于一个“八股文”模板,之后再看到题目有类似要求,直接套用模板代码即可。
笔记:
- 遇到需要排序或者比大小的地方,直接调用python的sort()方法:
student = [('Joe', 'Math990112', 89), ('Mike', 'CS991301', 100), ('Mary', 'EE990830', 95)]
student.sort(key=lambda x:x[2],reverse=True) #按照第三维的数字排序,默认升序
- 取两个集合的交集,并集,差集:
s = set([3,9,10,20,40]) #创建一个数值集合
t = set([3,9,1,7,29,81]) #创建一个数值集合
a = t | s # t 和 s的并集 ,等价于t.union(s) 输出:{1, 3, 7, 40, 9, 10, 81, 20, 29}
b = t & s # t 和 s的交集 ,等价于t.intersection(s) 输出:{9, 3}
c = t - s # 求差集(项在t中,但不在s中) ,等价于t.difference(s) 输出:{81, 1, 29, 7}
d = t ^ s # 对称差集(项在t或s中,但不会同时出现在二者中),等价于t.symmetric_difference(s) 输出:{1, 7, 40, 10, 81, 20, 29}
- 当要求输出的为一组数字且需要排序时,不必用for循环来一一输出列表元素,一个*sorted方法更妙:
print(*sorted(list(set1-set2),reverse=True),sep=' ') #注意只有集合才能做交集并集差集运算
- 题目要求用另一种形式来输出时,直接用字典来一一对应:
pinyin_dict = {'0':'ling','1':'yi','2':'er','3':'san','4':'si','5':'wu','6':'liu','7':'qi','8':'ba','9':'jiu'}
- format函数中{0:2d},{1:3d},{2:sd}的意思:
0, 表示第一个参数,1, 表示第二个参数, 之后顺次递加;
{0:2d}表示第一个参数x的格式。0 代表x,:2d 表示两个宽度的10进制数显示
比如:4通过’{:0>2d}‘.format(4)处理之后变成04
再比如:4通过’{:1>3d}'.format(4)处理之后变成114
其他格式化:
如:print(‘{:.2f}’.format(3.1415926))
输出:3.14
规则:
- 输入方式:list(map(int, input().split()))或者set(map(int,input().split()))是这套题库中经常出现的输入方式:第 1 行给出一个正整数K (<100),第 2 行给出 K 个互不相同的待验证的正整数 n (1<n≤100)的值,数字间用空格隔开。
输入样例:
6
3 5 6 7 8 11
样例代码:
n = int(input())
l = set(map(int,input().split()))