Python(四)—— 使用库

发布于:2024-12-18 ⋅ 阅读:(116) ⋅ 点赞:(0)

Python 的官方文档传送门:https://docs.python.org/3.10/library/index.html

一,import

import和 C/C++ 的 #include 一样,都是使用库函数的必要步骤,下面给出了几个示例

示例一:日期计算

输入任意两个日期,计算两个日期之间格勒多少天

  • 使用 import 语句导入标准库的 datetime 模块
  • 使用 datetime.datetime 构造两个日期. 参数使用 年, 月, 日 这样的格式.
  • 两个日期对象相减, 即可得到日期的差值.
import datetime

date1 = 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 + s

print(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 += 1
    return res
print(countPrefixes(["a","b","c","ab","bc","abc"], "abc"))

 

示例三,文件查找工具 

指定一个待搜索路径, 同时指定一个待搜索的关键字。在待搜索路径中查找是否文件名中包含这个关键字

  • 使用 os.walk 即可实现目录的递归遍历
  • os.walk 返回一个三元组, 分别是 当前路径 , 当前路径下包含的目录名 (多个), 当前路径下包含的文件 名 (多个)
import os

inputPath = 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 qrcode

img = 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}')

 


网站公告

今日签到

点亮在社区的每一天
去签到