八周Python强化计划(六)

🗓 第6周 教学主题:标准库实战与虚拟环境

🎯 学习目标

  1. 能使用 datetime 处理日期与时间
  2. 能用 json 模块读写 JSON 数据
  3. 会使用 collections 中的 Counterdefaultdict
  4. 了解 random 模块生成随机数据
  5. 能创建和管理 虚拟环境(venv)
  6. 会使用 requirements.txt 管理项目依赖

🕒 第11课:常用标准库实战(60分钟)

⏱ 时间分配建议

  • 每个模块演示(30分钟)
  • 综合小项目:日程记录器(25分钟)
  • Q&A(5分钟)

📚 内容大纲与代码示例

1. datetime:处理日期和时间
python 复制代码
from datetime import datetime, timedelta

# 获取当前时间
now = datetime.now()
print("现在是:", now)  # 2025-12-30 14:30:45.123456

# 格式化输出
print(now.strftime("%Y年%m月%d日 %H:%M"))  # 2025年12月30日 14:30

# 解析字符串为 datetime
date_str = "2025-12-25"
christmas = datetime.strptime(date_str, "%Y-%m-%d")
print("圣诞节:", christmas)

# 时间计算
one_week_later = now + timedelta(weeks=1)
print("一周后:", one_week_later.strftime("%m月%d日"))

💡 常用格式符:%Y(四位年)、%m(月)、%d(日)、%H(24小时)、%M(分)


2. json:读写 JSON 数据(Web/API 常用)
python 复制代码
import json

# Python 对象 → JSON 字符串
data = {"name": "张三", "tasks": ["买菜", "写代码"], "done": False}
json_str = json.dumps(data, ensure_ascii=False, indent=2)
print(json_str)

# 写入文件
with open("todo.json", "w", encoding="utf-8") as f:
    json.dump(data, f, ensure_ascii=False, indent=2)

# 从文件读取
with open("todo.json", "r", encoding="utf-8") as f:
    loaded = json.load(f)
    print(loaded["name"])  # 张三

ensure_ascii=False:保留中文

indent=2:美化输出(适合调试)


3. collections:更强大的容器
python 复制代码
from collections import Counter, defaultdict

# Counter:快速统计
text = "hello world"
letter_count = Counter(text)
print(letter_count)          # Counter({'l': 3, 'o': 2, ...})
print(letter_count.most_common(2))  # [('l', 3), ('o', 2)]

# defaultdict:避免 KeyError
word_groups = defaultdict(list)
words = ["apple", "banana", "cherry", "avocado"]
for word in words:
    first_letter = word[0]
    word_groups[first_letter].append(word)

print(word_groups["a"])  # ['apple', 'avocado']
print(word_groups["z"])  # [](不会报错!)

4. random:生成随机数据
python 复制代码
import random

print(random.randint(1, 10))     # 1~10 的整数
print(random.choice(["红", "绿", "蓝"]))  # 随机选一个
print(random.sample(range(1, 100), 5))   # 无重复抽5个

# 洗牌
cards = ["A", "K", "Q", "J"]
random.shuffle(cards)
print(cards)

🔐 注意:random 不适用于加密!需用 secrets 模块(高级)


✍️ 课堂练习:日程记录器(25分钟)

python 复制代码
# 任务:创建一个简单的日程管理器
# 1. 用户输入事件名称
# 2. 自动记录当前时间(用 datetime)
# 3. 将事件保存为 JSON 格式到 schedule.json
# 4. 每次启动时读取并显示已有事件数量

# 示例输出:
# 已有 2 个日程
# 新事件: 开会
# 已保存!

✅ 参考答案:

python 复制代码
import json
from datetime import datetime
import os

# 读取已有日程
if os.path.exists("schedule.json"):
    with open("schedule.json", "r", encoding="utf-8") as f:
        schedule = json.load(f)
else:
    schedule = []

print(f"已有 {len(schedule)} 个日程")

# 添加新事件
event = input("新事件: ")
now = datetime.now().strftime("%Y-%m-%d %H:%M")
schedule.append({"event": event, "time": now})

# 保存
with open("schedule.json", "w", encoding="utf-8") as f:
    json.dump(schedule, f, ensure_ascii=False, indent=2)

print("已保存!")

🕒 第12课:虚拟环境与依赖管理(60分钟)

⏱ 时间分配

  • 虚拟环境概念讲解(15分钟)
  • 实操:创建 venv + 安装包(20分钟)
  • 依赖导出与重建(15分钟)
  • 最佳实践总结(10分钟)

📚 为什么需要虚拟环境?

不同项目可能依赖不同版本 的第三方库(如项目A用 Django 3,项目B用 Django 4)

虚拟环境 = 隔离的 Python 环境,互不干扰!


1. 创建虚拟环境(使用 venv,Python 内置)

bash 复制代码
# 在项目目录下执行(终端,非 Python!)
python -m venv myenv

myenv 是环境文件夹名(可自定义)


2. 激活虚拟环境

  • Windows (CMD/PowerShell) :

    bash 复制代码
    myenv\Scripts\activate
  • macOS / Linux :

    bash 复制代码
    source myenv/bin/activate

✅ 激活后,命令行前会显示 (myenv)


3. 在虚拟环境中安装包

bash 复制代码
# 激活后执行
pip install requests colorama

✅ 所有包只安装在 myenv 中,不影响系统 Python


4. 导出依赖列表(生成 requirements.txt

bash 复制代码
pip freeze > requirements.txt

requirements.txt 内容示例:

复制代码
colorama==0.4.6
requests==2.31.0

5. 在新机器/新环境重建项目

bash 复制代码
# 1. 创建新虚拟环境
python -m venv new_env
# 2. 激活
source new_env/bin/activate  # 或 Windows 方式
# 3. 安装依赖
pip install -r requirements.txt

✅ 完美复现开发环境!


6. 退出虚拟环境

bash 复制代码
deactivate

✍️ 课堂练习(15分钟)

bash 复制代码
# 1. 在当前目录创建虚拟环境 myproject_env
# 2. 激活它
# 3. 安装 colorama 和 requests
# 4. 生成 requirements.txt
# 5. 写一个 test.py,用 colorama 打印彩色"环境已就绪!"
# 6. 运行 test.py
# 7. 退出环境

test.py 参考代码:

python 复制代码
from colorama import Fore, init
init()
print(Fore.GREEN + "环境已就绪!" + Fore.RESET)

🧠 本周核心概念速记卡

工具 用途
datetime 获取/格式化/计算时间
json 读写 JSON(API/配置文件)
Counter 快速统计元素频率
defaultdict 避免字典 KeyError
venv 创建隔离的 Python 环境
pip freeze 导出当前环境依赖
requirements.txt 项目依赖清单,用于重建环境

📝 课后小任务(可选)

创建一个"天气模拟器"项目文件夹:

  1. 初始化虚拟环境
  2. 安装 fake-useragent(生成随机 User-Agent)
  3. 编写 weather_sim.py:用 random 生成城市天气,用 datetime 标记时间,用 json 保存
  4. 生成 requirements.txt
相关推荐
zpjing~.~2 小时前
iframe和父页面消息通信
开发语言·前端·javascript
IT·小灰灰2 小时前
AI算力租赁完全指南(三):实战篇——GPU租用实操教程:从选型、避坑到跑通AI项目
人工智能·python·深度学习
老华带你飞2 小时前
电影购票|基于java+ vue电影购票系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot
老华带你飞2 小时前
宠物管理|基于java+ vue宠物管理系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·宠物
Larry_Yanan3 小时前
Qt多进程(六)共享内存和信号量
开发语言·qt
BD_Marathon3 小时前
bean基础配置
java·开发语言
东方忘忧3 小时前
Qt使用QDesktopServices::openUrl打开系统默认应用(如浏览器,文件,文件夹和邮件)
开发语言·qt
计算机内卷的N天3 小时前
qt的模态和非模态状态
开发语言·qt
半桶水专家10 小时前
go语言中的结构体嵌入详解
开发语言·后端·golang