Python 常用标准 / 第三方库:random、tqdm、turtle、jieba 用法
目录
上一章我们学习了面向对象全套知识,从类、属性、类方法到继承多态,已经掌握 Python 核心语法逻辑。但手写基础代码实现复杂功能会很繁琐,比如随机数字、动态加载进度、文字拆分、画图,不用从零造轮子,Python 提供大量现成工具库,导入一行代码就能直接调用成熟功能。
本章挑选学习阶段最常用四款库:random随机工具、tqdm进度条、turtle绘图、jieba中文分词,搭配完整可运行案例,轻松实现猜数字游戏、质数统计、简笔画、文本拆分。
一、random 随机库:实现猜数字小游戏
random是Python自带标准库,无需额外安装,专门生成随机整数、随机小数、随机抽取内容,日常抽奖、猜数字、随机打乱数据都靠它。
1.1 核心常用函数
random.randint(a,b):生成a到b之间的随机整数,包含首尾数字random.random():生成0~1之间随机小数random.choice(列表):随机从序列里挑选一个元素
1.2 实战:限定次数猜数字游戏
配套完整源码,设置最大猜测轮数,猜中直接跳出循环,次数用完公布答案:
import random
# 生成0-100的随机目标数字
r = random.randint(0, 100)
# 输入最多能猜多少次
N = int(input("请输入猜测次数:"))
for i in range(N):
# 计算剩余可猜次数
rest = N - i
print(f"剩余猜测次数:{rest}")
guess = int(input("请输入猜测数字:"))
if guess > r:
print("猜大了,再试试小一点的数")
elif guess < r:
print("猜小了,可以往大猜")
else:
print("恭喜,猜对了!游戏通关")
break
for循环完整走完才会执行else(次数用完)
else:
print("所有猜测次数已用尽")
print(f"正确随机数字是{r}")
print("游戏结束")
运行交互示例:
请输入猜测次数:5
剩余猜测次数:5
请输入猜测数字:50
猜小了,可以往大猜
剩余猜测次数:4
请输入猜测数字:75
猜大了,再试试小一点的数
剩余猜测次数:3
请输入猜测数字:62
恭喜,猜对了!游戏通关
1.3 拓展小案例:随机抽奖
import random
name_list = ["小王","小李","小张","小红"]
# 随机抽取一名中奖用户
luck_man = random.choice(name_list)
print(f"本轮中奖人员:{luck_man}")
1.4 拓展小案例:随机打乱列表
抽奖之外,random.shuffle(列表)可以原地打乱列表顺序,适合做随机出题、洗牌、打乱播放列表等场景:
import random
question_list = ["题目A", "题目B", "题目C", "题目D"]
# 原地打乱列表顺序
random.shuffle(question_list)
print(question_list)
# 输出示例:['题目C', '题目A', '题目D', '题目B']
避坑:randint 与 range 边界别混淆
random.randint(a,b)是包含首尾的,比如random.randint(1,3)可能返回1、2、3;而range(a,b)是不含右边界的,range(1,3)只生成1、2。两者边界规则相反,写循环和随机数时最容易搞混,建议记成「randint 两头都算,range 只算左边」。
二、tqdm 进度条库:长时间循环可视化进度
写循环处理大量数据时,不知道程序运行到哪一步,等待过程很煎熬,tqdm可以生成动态文字进度条,直观展示运行进度。
说明:tqdm属于第三方库,需要先安装才能使用。
安装命令:pip install tqdm。安装完成后,在命令行输入 pip show tqdm 可以查看版本和安装路径,确认安装成功;也可以直接打开 Python 交互环境输入 import tqdm,不报错即表示可以正常使用。
2.1 配套质数统计完整示例
循环生成百万个随机数字,统计其中质数,实时展示加载进度:
import tqdm
import random
prime_count = 0
包裹循环范围,自动生成进度条
for _ in tqdm.tqdm(range(1000000)):
num = random.randint(1000, 100000)
# 判断是否为质数
flag = True
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
flag = False
break
if flag:
prime_count += 1
输出质数占比
print(f"一百万随机数中质数占比:{prime_count/1000000}")
运行后控制台会出现动态进度条,实时显示已完成比例、预计剩余时间。
2.2 简易小进度条演示
from tqdm import tqdm
import time
模拟文件读取循环
for i in tqdm(range(50)):
time.sleep(0.05)
print("全部文件读取完成")
避坑:循环内 print 会打乱进度条
在tqdm包裹的循环里直接print,输出会穿插在进度条中间,把动态刷新界面搅乱。需要查看中间结果时,建议改用tqdm.write()输出,或者把结果收集到列表里,循环结束后再统一打印。
2.3 思考:tqdm 会拖慢程序吗
很多同学会担心,多了一层进度条,百万级循环会不会明显变慢。其实tqdm默认不会每轮循环都刷新界面,而是按一定时间间隔(默认约 0.1 秒)更新一次进度条,所以它带来的额外开销非常小。在百万级循环里,真正耗时的是循环体内的计算逻辑,比如上面的质数判断;相比之下,进度条本身的刷新成本几乎可以忽略。
为了更直观地感受这一点,可以分别跑一遍「带 tqdm」和「不带 tqdm」的同一段循环,用time.time()记录前后时间差,对比总运行时间:
import time
import random
不带 tqdm 的版本
start = time.time()
for _ in range(1000000):
random.randint(1000, 100000)
print(f"不带 tqdm 耗时:{time.time() - start:.2f} 秒")
带 tqdm 的版本
from tqdm import tqdm
start = time.time()
for _ in tqdm(range(1000000)):
random.randint(1000, 100000)
print(f"带 tqdm 耗时:{time.time() - start:.2f} 秒")
实际运行会发现两者耗时非常接近,差距通常只有零点几秒。所以结论是:tqdm 的开销可以忽略,放心用它换取清晰的进度反馈。真正需要留意的反而是循环里频繁print这类会大量刷屏的操作,那才是拖慢程序的元凶。
三、turtle 绘图库:零基础画图、简笔画
turtle是内置绘图库,像一只小海龟,通过控制前进、转弯、落笔、抬笔,画出直线、圆形、五角星等图案,适合入门可视化趣味编程。
3.1 基础绘图案例:绘制五角星
import turtle
# 设置画笔粗细、颜色
turtle.pensize(3)
turtle.pencolor("red")
# 循环五次绘制五角星
for _ in range(5):
turtle.forward(200)
turtle.right(144)
# 保持绘图窗口不关闭
turtle.done()
3.2 绘制彩色圆形螺旋
import turtle
color_list = ["red","orange","yellow","green","blue"]
turtle.speed(0)
for i in range(50):
turtle.pencolor(color_list[i%5])
turtle.circle(i*5)
turtle.left(10)
turtle.done()
3.3 简易绘图案例:绘制爱心
import turtle
turtle.pensize(3)
turtle.pencolor("red")
turtle.fillcolor("red")
turtle.begin_fill()
# 绘制爱心轮廓
turtle.left(50)
turtle.forward(133)
turtle.circle(50, 200)
turtle.right(140)
turtle.circle(50, 200)
turtle.forward(133)
turtle.end_fill()
# 保持绘图窗口不关闭
turtle.done()
避坑:绘图窗口闪退,记得写 turtle.done()
很多人画完图窗口一闪而过,是因为程序执行完就自动退出了。turtle.done()必须写在所有绘图代码的最后一行,作用是保持窗口打开等待手动关闭。如果漏写,图形还没看清窗口就消失了。
四、jieba 中文分词库:文本拆分、关键词提取
普通分割符号只能按标点切割中文,jieba是专用中文分词工具,能按照语义拆分句子,做问答机器人、文本统计、文章分析必备,上一章字典客服案例就能搭配它使用。
4.1 基础分词示例
import jieba
text = "产品价格是多少?什么时候可以发货"
# 精确模式分词
word_list = jieba.lcut(text)
print(word_list)
# 输出:['产品', '价格', '是', '多少', '?', '什么时候', '可以', '发货']
搭配之前的问答字典匹配关键词
robot_dict = {
"价格":"所有商品统一29.9元",
"发货":"下单48小时内发出"
}
for word in word_list:
if word in robot_dict:
print("机器人回复:", robot_dict[word])
break
4.2 极简案例:提取高频词
用jieba.lcut()分词后,配合字典统计词频,再按出现次数排序,就能快速找出文本里的高频词:
import jieba
text = "Python入门教程,Python语法,Python库,Python实战"
word_list = jieba.lcut(text)
# 统计每个词出现次数
word_count = {}
for word in word_list:
word_count[word] = word_count.get(word, 0) + 1
# 按词频从高到低排序
top_words = sorted(word_count.items(), key=lambda x: x[1], reverse=True)
print(top_words[:3])
# 输出示例:[('Python', 4), ('入门', 1), ('教程', 1)]
避坑:精确模式是默认,全模式与搜索引擎模式一句话区分
jieba.lcut()默认走精确模式,把句子切分成最合理的词语组合;全模式会把所有能成词的组合都切出来,结果更碎;搜索引擎模式在精确模式基础上,再把长词进一步拆分,适合搜索引擎索引。日常文本处理用默认精确模式就够了。
五、库使用基础区分:标准库 vs 第三方库
- 标准库(自带,无需安装):random、turtle、内置文件、时间工具,安装Python后直接
import导入即可使用; - 第三方库(需要手动安装):tqdm、jieba、数据分析库,需要通过pip命令下载后才能导入;
安装通用格式:pip install 库名,例如pip install tqdm、pip install jieba。
六、各库适用场景汇总
| 库名称 | 核心用途 | 适合场景 |
|---|---|---|
| random | 生成随机数字、随机抽取 | 猜数字游戏、抽奖、随机样本生成 |
| tqdm | 循环进度可视化 | 大批量数据计算、文件批量处理 |
| turtle | 简易图形绘制 | 趣味编程、几何图案练习 |
| jieba | 中文语义分词 | 问答机器人、文章关键词统计、文本清洗 |
七、本章小结
- 库就是别人封装好的工具包,导入后直接调用功能,不用重复编写底层逻辑;
- random内置随机工具,完整实现了限定次数猜数字小游戏;
- tqdm给长时间循环增加可视化进度,解决程序无反馈的问题;
- turtle依靠海龟画笔,零基础就能绘制各类几何图案;
- jieba专门处理中文句子,拆分词语,适配文本交互类程序;
- 自带标准库直接导入,第三方库需要提前安装才能使用。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)