Python 的官方文档传送门:https://docs.python.org/3.10/library/index.html
一,import
import和 C/C++ 的 #include 一样,都是使用库函数的必要步骤,下面给出了几个示例
示例一:日期计算
输入任意两个日期,计算两个日期之间格勒多少天
- 使用 import 语句导入标准库的 datetime 模块
- 使用 datetime.datetime 构造两个日期. 参数使用 年, 月, 日 这样的格式.
- 两个日期对象相减, 即可得到日期的差值.
import datetimedate1 = datetime.datetime(2022, 12, 16)
date2 = datetime.datetime(2024, 12, 16)print(date2 - date1)
示例二,字符串操作
①翻转单词顺序
输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和 普通字母一样处理。例如输入字符串"I am a student. ",则输出"student. a am I"。
- 使用 str 的 split 方法进行字符串切分, 指定"空格"为分隔符,返回结果是一个列表
- 使用列表的 reverse 方法进行逆序
- 再使用 str 的 join 方法进行字符串拼接,把列表中的内容进行合并
def reverseWords(s):tokens = s.split()tokens.reverse()return ' '.join(tokens)
print(reverseWords('I am a student.'))
②旋转字符串
给定两个字符串, s 和 goal。如果在若干次旋转操作之后,s 能变成 goal ,那么返回 true 。 s 的 旋转操作 就是将 s 最左边的字符移动到最右边。 例如, 若 s = 'abcde',在旋转一次之后结果就是'bcdea' 。
- 使用 len 求字符串的长度. 如果长度不相同, 则一定不能旋转得到
- 将 s 和 自己 进行拼接, 然后直接使用 in 方法来判定 goal 是否是 s + s 的子串.
def rotateString(s, goal):return len(s) == len(goal) and goal in s + sprint(rotateString('abcde', 'cdeab'))
print(rotateString('hello', 'world'))
③统计给定字符串前缀的字符串数目
给你一个字符串数组 words 和一个字符串 s ,其中 words[i] 和 s 只包含 小写英文字母 。 请你返回 words 中是字符串 s 前缀 的 字符串数目 。 一个字符串的 前缀 是出现在字符串开头的子字符串。子字符串 是一个字符串中的连续一段字符序列。
- 依次遍历 words 中的字符串
- 直接使用字符串的 startswith 方法即可判定当前字符串是否是 s 的前缀.
def countPrefixes(words, s):res = 0 # 符合要求字符串个数for word in words:if s.startswith(word):res += 1return res
print(countPrefixes(["a","b","c","ab","bc","abc"], "abc"))
示例三,文件查找工具
指定一个待搜索路径, 同时指定一个待搜索的关键字。在待搜索路径中查找是否文件名中包含这个关键字
- 使用 os.walk 即可实现目录的递归遍历
- os.walk 返回一个三元组, 分别是 当前路径 , 当前路径下包含的目录名 (多个), 当前路径下包含的文件 名 (多个)
import osinputPath = input('请输入待搜索路径: ')
pattern = input('请输入待搜索关键词: ')for dirpath, dirnames, filenames in os.walk(inputPath):for f in filenames:if pattern in f:print(f'{dirpath}/{f}')
二,第三方库
2.1 pip
pip 是 Python 内置的包管理器:
- 所谓包管理器 就类似于我们平时使用的手机 app 应用商店一样
- 第三方库有很多, 是不同的人, 不同的组织实现的;为了方便大家整理, Python 官方提供了一个网站 PyPI https://pypi.org/, 来收集第三方库
- 其他大佬写好的第三方库也会申请上传到 PyPI 上,这个时候就可以方便的使用 pip 工具来下载 PyPI 上的库了
- pip 在我们安装 Python 的时候就已经内置了,无需额外安装. pip 是一个可执行程序, 就在 Python 的安装目录中
打开cmd,直接输入pip,如果显示下面信息,说明pip已经准备就绪
如果提示说pip不是内部或外部命令,那就是还没有把 pip 加入到环境变量PATH中,可以手动添加
使用下面命令,则可以安装第三方库,安装成功后, 即可使用 import 导入相关模块, 即可进行使用.
pip install [库名]
注意: 如果使用 pip 安装完第三方库之后, 在 PyCharm 中仍然提示找不到对应的模块, 则检查 Settings -> Project -> Python Interpreter , 看当前 Python 解释器设置的是否正确. (如果一个机器上安装了多个版 本的 Python, 容易出现这种情况).
2.2 示例
示例一,生成二维码
我们可以使用 qrcode 这个库来生成二维码
然后就可以直接在控制台里安装了:
安装完成后就可以在代码中之间使用了:
import qrcodeimg = qrcode.make("你好呀")
img.save('qrcode.png
执行后会在项目目录下生成一个图片文件 ,之后用微信或者其它扫码工具,就可以看到里面的内容了,我们日常扫描的二维码内部一般是一个URL,扫码后会自动跳转到对应的网址,然后打开一个网页
示例二,操作 excel
读取 excel 可以使用 xlrd 模块. 文档地址: https://xlrd.readthedocs.io/en/latest/
修改 excel 可以使用 xlwt 模块. 文档地址: https://xlwt.readthedocs.io/en/latest/
我们现在工作目录新建一个 test.xlsx并预先往里面添加一些数据:
假设我们要求上面这些同学的平均分,我们可以先用 pip 安装 xlrd:此处要指定版本号安装,如果不指定版本号就是默认安装的最新版,最新版删除了对 xlsx 格式文件的支持:
然后就是编写代码了,具体步骤为:
- 使用 open_workbook 方法打开一个 excel 文件
- 使用 xlsx.sheet_by_index(0) 获取到 0 号标签页
- 使用 table.nrows 获取到表格的行数
- 使用 table.cell_value(row, col) 获取到表格中 row, col 位置的元素值.
import xlrd
# 1. 打开 xlsx 文件
xlsx = xlrd.open_workbook('test.xlsx')# 2. 获取 0 号标签页. (当前只有一个标签页)
table = xlsx.sheet_by_index(0)# 3. 获取总行数
nrows = table.nrows# 4. 遍历数据
count = 0
total = 0
for i in range(1, nrows):# 使用 cell_value(row, col) 获取到指定坐标单元格的值.classId = table.cell_value(i, 1)if classId == 100:total += table.cell_value(i, 2)count += 1
print(f'平均分: {total / count}')