刷了一个月的PTA,昨晚终于把最后一题刷完了 👏👏👏
刚刚好刷了一个月,临近期末还特别忙。上两周课表爆炸,上周开始实训周,肝了两天把实训项目弄完了~!!!😀
我的PTA题目集:https://github.com/Farmer-chong/pta
我把整套题的答题集都放在了GitHub上面,有些题目还存在许多问题,欢迎各位大佬提issue,提pr来解答!

刷题心得

这套题挺简单的,对算法、数据结构等知识储备要求不多。主要是拿来熟悉python的语法。 如果当初当作练习来刷显然没把这套题充分利用起来。 因此我在刷的时候当成了算法题来刷,运行时间空间尽可能得压缩。
刷完题的感觉就是:对python的理解又深了一层(对python的依赖更深了/(ㄒoㄒ)/~~)

题目记录

这是记录我在刷题过程中,映像深刻的题目。

编程题部分

第5章-7 列表去重 (40分)

输入一个列表,去掉列表中重复的数字,按原来次序输出!

输入格式 输出格式 输入例子 输出例子
在一行中输入列表 在一行中输出不重复列表元素 [4,7,5,6,8,6,9,5] 4 7 5 6 8 9
code:
1
2
3
4
input_str = eval(input())
temp = list(set(input_str))
temp.sort(key = input_str.index)
print(' '.join(list(map(str, temp))))
总结

这题主要是因为用到了 eval 函数的另一种用法:转换数据类型

第6章-5 列表元素个数的加权和(1) (40分)

输入一个嵌套列表,嵌套层次不限,根据层次,求列表元素的加权个数和。第一层每个元素算一个元素,第二层每个元素算2个元素,第三层每个元素算3个元素,第四层每个元素算4个元素,…,以此类推!

输入格式 输出格式 输入例子 输出例子
在一行中输入列表 在一行中输出加权元素个数值 [1,2,[3,4,[5,6],7],8] 15
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
temp_str = eval(input())

def analysis(weigh, target_list):
res = 0
for key in target_list:
if type(key) == list:
temp = analysis(weigh + 1,key)
res += temp
else:
res += weigh
return res

print(analysis(1, temp_str))
总结

这题用到了递归,加深了对递归的了解

函数题部分

第6章函数-5 使用函数求余弦函数的近似值 (20分)

本题要求实现一个函数,用下列公式求cos(x)近似值,精确到最后一项的绝对值小于eps(绝对值小于eps的项不要加):
cos (x) = x^0 / 0! - x^2 / 2! + x^4 / 4! - x^6 / 6! + ?
函数接口定义:funcos(eps,x ),其中用户传入的参数为eps和x;函数funcos应返回用给定公式计算出来,保留小数4位。

函数接口定义
1
2
函数接口:
funcos(eps,x ),返回cos(x)的值。
裁判测试程序样例
1
2
3
4
5
6
7
8
9
在这里给出函数被调用进行测试的例子。例如:


/* 请在这里填写答案 */

eps=float(input())
x=float(input())
value=funcos(eps,x )
print("cos({0}) = {1:.4f}".format(x,value))
输入样例
1
2
0.0001
-3.1
输出样例
1
cos(-3.1) = -0.9991
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
def funcos(eps, x):
res = 0
n = 0
temp = 1
while (x ** n / factorial(n)) >= eps:
n += 2
num = 0
for key in range(0, n, 2):
num += 1
if key % 4 == 0:
res += x ** key / factorial(key)
else:
res -= x ** key / factorial(key)
return res

def factorial(x):
res = 1
for key in range(2, int(x)+1):
res *= key
return res
总结

这题是参考别人答案做的一道题,我原本把for循环部分嵌入到了while循环里面,但测试的时候第二组测试样例没有通过,想了很久都没想出来哪里出了问题。会的大佬如果看到了,麻烦提个issue告知我一下,我的题目集都存在GitHub上面了。