# Python 题解
2019 年 12 月份参加 CSP 之前写的代码,只做了历年的前两题,有时间可能会继续更新
## 目录
- [题解列表](#题解列表)
- [常用代码片段](#常用代码片段)
- [四舍五入](#四舍五入)
- [向上向下取整](#向上向下取整)
- [输入输出](#输入输出)
- [内置函数](#内置函数)
- [map()函数](#map函数)
- [zip()函数](#zip函数)
- [sorted()函数](#sorted函数)
- [enumerate() 函数](#enumerate-函数)
- [匿名函数](#匿名函数)
- [正则表达式及re库](#正则表达式及re库)
## 题解列表
> Lorem ipsum dolor sit amet consectetur adipisicing elit. Sint, aut, quos ipsam temporibus libero dolor laborum ipsum fuga odit rerum rem dolorem recusandae, provident necessitatibus. Illum voluptas autem eum rerum?
>
> 使用 Jupyter Notebook 查看各题的题解代码
- [第 1 题题解汇总](题解汇总/第1题题解汇总.ipynb)
- [第 2 题题解汇总](题解汇总/第2题题解汇总.ipynb)
- [第 3 题题解汇总](题解汇总/第3题题解汇总.ipynb)
- [第 4 题题解汇总](题解汇总/第4题题解汇总.ipynb)
- [第 5 题题解汇总](题解汇总/第5题题解汇总.ipynb)
## 常用代码片段
### 四舍五入
```python
>>> round(0.5)
0
>>> round(-0.5)
0
>>> round(0.6)
1
>>> round(0.51)
1
>>> round(-0.51)
-1
```
### 向上向下取整
```python
>>> import math
>>> math.floor(0.6)
0
>>> math.ceil(0.6)
1
>>> math.ceil(-0.6)
0
>>> math.ceil(-1.6)
-1
```
### 输入输出
```python
# 输入一个整数
>>> n=int(input())
6
>>> n
6
# 输入一个整型列表
>>> l=list(map(int,input().split()))
1 2 3 4 5 6
>>> l
[1, 2, 3, 4, 5, 6]
# 同一行输出
>>> print(' '.join(map(str,l)))
1 2 3 4 5 6
>>> print(" ".join(str(i) for i in l))
1 2 3 4 5 6
# 也可遍历输出
>>> for i in l:
... print(i,end=' ')
...
1 2 3 4 5 6
```
### 内置函数
Python 内置函数如下,使用方式可查看[菜鸟教程](https://www.runoob.com/python3/python3-built-in-functions.html)
[![Python内置函数](https://cdn.jsdelivr.net/gh/eternidad33/picbed/img/QQ%E6%88%AA%E5%9B%BE20200822184129.png)](https://www.runoob.com/python3/python3-built-in-functions.html)
#### map()函数
```python
>>>def square(x) : # 计算平方数
... return x ** 2
...
>>> map(square, [1,2,3,4,5]) # 计算列表各个元素的平方
[1, 4, 9, 16, 25]
>>> map(lambda x: x ** 2, [1, 2, 3, 4, 5]) # 使用 lambda 匿名函数
[1, 4, 9, 16, 25]
# 提供了两个列表,对相同位置的列表数据进行相加
>>> map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
[3, 7, 11, 15, 19]
```
#### zip()函数
```python
>>>a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b) # 返回一个对象
>>> zipped
<zip object at 0x103abc288>
>>> list(zipped) # list() 转换为列表
[(1, 4), (2, 5), (3, 6)]
>>> list(zip(a,c)) # 元素个数与最短的列表一致
[(1, 4), (2, 5), (3, 6)]
>>> a1, a2 = zip(*zip(a,b)) # 与 zip 相反,zip(*) 可理解为解压,返回二维矩阵式
>>> list(a1)
[1, 2, 3]
>>> list(a2)
[4, 5, 6]
```
#### sorted()函数
```python
# 以下实例展示了 sorted 的最简单的使用方法:
>>> sorted([5, 2, 3, 1, 4])
[1, 2, 3, 4, 5] # 默认为升序
# 你也可以使用 list 的 list.sort() 方法。这个方法会修改原始的 list(返回值为None)。通常这个方法不如sorted()方便-如果你不需要原始的 list,list.sort()方法效率会稍微高一些。
>>> a=[5,2,3,1,4]
>>> a.sort()
>>> a
[1,2,3,4,5]
# 另一个区别在于list.sort() 方法只为 list 定义。而 sorted() 函数可以接收任何的 iterable。
>>> sorted({1: 'D', 2: 'B', 3: 'B', 4: 'E', 5: 'A'})
[1, 2, 3, 4, 5]
# 利用key进行倒序排序
>>> example_list = [5, 0, 6, 1, 2, 7, 3, 4]
>>> result_list = sorted(example_list, key=lambda x: x*-1)
>>> print(result_list)
[7, 6, 5, 4, 3, 2, 1, 0]
# 要进行反向排序,也通过传入第三个参数 reverse=True:
>>> example_list = [5, 0, 6, 1, 2, 7, 3, 4]
>>> sorted(example_list, reverse=True)
[7, 6, 5, 4, 3, 2, 1, 0]
```
#### enumerate() 函数
```python
# 以下展示了使用 enumerate() 方法的实例:
>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter']
>>> list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
>>> list(enumerate(seasons, start=1)) # 小标从 1 开始
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
# 普通的 for 循环
i = 0
seq = ['one', 'two', 'three']
for element in seq:
print(i, seq[i])
i += 1
# 输出结果为:
0 one
1 two
2 three
# for 循环使用 enumerate
seq = ['one', 'two', 'three']
for i, element in enumerate(seq):
print(i, element)
# 输出结果为:
0 one
1 two
2 three
```
### 匿名函数
python 使用 lambda 来创建匿名函数。
所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。
- lambda 只是一个表达式,函数体比 def 简单很多。
- lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
- lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。
- 虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
```python
>>> sum = lambda arg1, arg2: arg1 + arg2
>>> a=sum(5,5)
>>> a
10
```
### 正则表达式及re库
> 正则表达式的写法,可参看我的[博客](https://blog.csdn.net/qq_42907802/article/details/10653638),re库实例可查看[菜鸟教程](https://www.runoob.com/python3/python3-reg-expressions.html)
**正则表达式的写法**
| 操作符 | 说明 | 实例 |
| ------- | -------------------------------- | --------------------------------------- |
| `.` | . 表示任何单个字符 | |
| `[]` | 字符集,对单个字符给出取值范围` | 表示a、b、c,[a‐z]表示a到z单个字符 |
| `[^]` | 非字符集,对单个字符给出排除范围 | `[\^abc]`表示非a或b或c的单个字符 |
| `*` | 前一个字符0次或无限次扩展 | `abc\*` 表示ab、abc、abcc、abccc等 |
| `+` | 前一个字符1次或无限次扩展 | `abc+ `表示abc、abcc、abccc等 |
| `?` | 前一个字符0次或1次扩展 | `abc? `表示ab、abc |
| `|` | 左右表达式任意一个 | `abc\|def `表示abc、def |
| `{m}` | 扩展前一个字符m次 | `ab{2}c`表示abbc |
| `{m,n}` | 扩展前一个字符m至n次(含n) | `ab{1,2}c`表示abc、abbc |
| `^` | 匹配字符串开头 | `^abc`表示abc且在一个字符串的开头 |
| `$ ` | 匹配字符串结尾 | `abc$`表示abc且在一个字符串的结尾 |
| `( ) ` | 分组标记,内部只能使用`|`操作符 | `(abc)`表示abc,`(abc|def)`表示abc、def |
| `\d` | 数字,等价于[0‐9] | |
| `\w ` | 单词字符,等价于[A‐Za‐z0‐9_] | |
**re库的用法**
| 函数 | 说明 |
| --------------- | ------------------------------------------------------------ |
| `re.search()` | 在一个字符串中搜索匹配正则表达式的第一个位置,返回match对象 |
| `re.match()` | 从一个字符串的开始位置起匹配正则表达式,返回match对象 |
| `re.findall()` | 搜索字符串,以列表类型返回全部能匹配的子串
没有合适的资源?快使用搜索试试~ 我知道了~
Python 实现历年 CSP 认证满分答案.rar
共71个文件
py:65个
ipynb:5个
md:1个
0 下载量 28 浏览量
2024-05-06
15:30:59
上传
评论
收藏 67KB RAR 举报
温馨提示
内容概要:该压缩包包含了历年来CSP(计算机软件能力认证)考试的满分答案的Python实现。这些答案涵盖了CSP认证考试的各个题目类型,通过Python代码展示了如何正确解答这些题目,旨在帮助学习者熟悉CSP考试题型和提高编程能力。 适用人群:适合准备参加CSP认证考试的学生、程序员、计算机科学相关专业的学习者,以及对算法和编程感兴趣的人群,希望通过实例代码学习CSP考试题目的解答方法。 使用场景及目标:该压缩包可用于学习者在准备CSP认证考试时,作为参考资料和学习工具。通过阅读满分答案的Python实现,学习者可以了解题目的解题思路、算法实现方式,提高解题能力,达到备战CSP认证考试的目标。 其他说明:学习者在使用这些满分答案时,应注重理解代码背后的算法思想和解题技巧,而非简单地复制粘贴代码。通过实际代码实现,加深对CSP考试题目的理解,提升编程能力和解题水平,为顺利通过CSP认证考试做好准备。
资源推荐
资源详情
资源评论
收起资源包目录
Python 实现历年 CSP 认证满分答案.rar (71个子文件)
Python 实现历年 CSP 认证满分答案
第3题
路径解析.py 2KB
模板生成系统.py 1KB
集合竞价.py 2KB
命令行选项.py 2KB
炉石传说.py 4KB
URL映射.py 2KB
节日.py 2KB
Markdown.py 3KB
化学方程式.py 3KB
JSON查询.py 1KB
画图.py 2KB
最大的矩形.py 879B
元素选择器.py 3KB
权限查询.py 2KB
字符画.py 2KB
CIDR合并.py 3KB
Crontab.py 5KB
字符串匹配.py 504B
损坏的RAID5.py 1KB
Markdown渲染器.py 282B
第4题
推荐系统.py 0B
第2题
窗口.py 699B
碰撞的小球.py 735B
ISBN号码.py 402B
二十四点.py 313B
日期计算.py 401B
风险人群筛查.py 1KB
买菜.py 483B
火车购票.py 2KB
学生排队.py 326B
回收站选址.py 913B
Z字形扫描.py 1KB
公共钥匙盒.py 1KB
小明种苹果(续).py 955B
数字排序.py 320B
画图.py 390B
游戏.py 529B
稀疏向量.py 1KB
小明放学.py 545B
test.py 1KB
工资计算.py 610B
俄罗斯方块.py 1KB
消除类游戏.py 936B
题解汇总
第5题题解汇总.ipynb 646B
第3题题解汇总.ipynb 64KB
第1题题解汇总.ipynb 21KB
第4题题解汇总.ipynb 646B
第2题题解汇总.ipynb 32KB
第5题
城市规划.py 0B
README.md 9KB
第1题
称检测点查询.py 764B
图像旋转.py 331B
报数.py 365B
跳一跳.py 339B
相反数.py 246B
小中大.py 190B
分蛋糕.py 195B
卖菜.py 353B
数位之和.py 77B
小明种苹果.py 478B
数列分段.py 142B
相邻数对.py 237B
出现次数最多的数.py 279B
中间数.py 304B
门禁系统.py 273B
折点计数.py 253B
小明上学.py 350B
最大波动.py 157B
打酱油.py 127B
线性分类器.py 3KB
最小差值.py 242B
共 71 条
- 1
资源评论
wusp1994
- 粉丝: 3173
- 资源: 983
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功