一、知识衔接:构建完整技能树
前两篇核心内容:
✅ 变量与数据类型 ✅ 列表/字典 ✅ 函数基础
本篇新技能点:
graph LR
A[前篇技能] --> B[字符串处理]
A --> C[文件操作]
B --> D[日记本程序]
C --> D
二、字符串操作:处理文字信息
1. 字符串基础(从现实生活理解)
-
现实比喻:像一条珍珠项链,每个字符是珍珠,有固定顺序
-
代码定义:用单引号
''
或双引号""
包裹的文字
# 定义字符串
message = "Hello, Python学习者!"
print(message[0]) # 输出'H'(第一个字符)
print(message[-3:]) # 输出'习者!'(最后三个字符)
2. 常用字符串方法(手把手演示)
① 大小写转换
text = "Python很有趣"
print(text.upper()) # "PYTHON很有趣"
print(text.lower()) # "python很有趣"
② 查找与替换
# 查找子串位置
print(text.find("有趣")) # 输出6(从第6个字符开始)
# 替换内容
new_text = text.replace("Python", "编程")
print(new_text) # "编程很有趣"
③ 拆分与连接
# 按空格拆分句子
sentence = "我 每天 学习 Python"
words = sentence.split(" ")
print(words) # ['我', '每天', '学习', 'Python']
# 用破折号连接列表
new_sentence = "-".join(words)
print(new_sentence) # "我-每天-学习-Python"
3. 格式化输出(三种实用方式)
name = "小明"
age = 12
# 方式1:f-string(推荐)
print(f"{name}今年{age}岁")
# 方式2:format()方法
print("{}今年{}岁".format(name, age))
# 方式3:%占位符(传统写法)
print("%s今年%d岁" % (name, age))
三、文件读写:永久保存数据
1. 文件操作基础(比喻讲解)
-
核心概念:文件就像笔记本,
open()
是打开本子,close()
是合上本子 -
安全写法:使用
with
自动管理开关(避免忘记关闭文件)
# 写入第一行日记
with open("diary.txt", "w", encoding="utf-8") as f:
f.write("2024-03-01 晴\n")
f.write("今天学会了文件操作!\n")
# 追加新的日记
with open("diary.txt", "a") as f:
f.write("\n2024-03-02 多云\n")
f.write("开始学习字符串处理\n")
2. 读取文件的三种方式
# 方式1:一次性读取全部内容
with open("diary.txt", "r") as f:
content = f.read()
print("---全文内容---\n" + content)
# 方式2:逐行读取(适合大文件)
with open("diary.txt", "r") as f:
print("\n---逐行读取---")
while True:
line = f.readline()
if not line: break
print(line.strip()) # 去掉换行符
# 方式3:读取为列表(最常用)
with open("diary.txt", "r") as f:
lines = f.readlines()
print("\n---第三行内容---")
print(lines[2].strip()) # 输出"2024-03-02 多云"
3. 文件路径处理技巧
import os
# 获取当前目录
current_dir = os.getcwd()
print("当前工作目录:", current_dir)
# 拼接安全路径(跨平台兼容)
file_path = os.path.join("data", "diary.txt")
print("完整路径:", file_path) # 输出"data/diary.txt"或"data\diary.txt"
四、综合实战:日记本程序
def write_diary():
date = input("输入日期(格式:YYYY-MM-DD):")
weather = input("输入天气:")
content = input("输入日记内容:")
with open("diary.txt", "a", encoding="utf-8") as f:
f.write(f"\n{date} {weather}\n")
f.write(f"{content}\n")
print("日记保存成功!")
def read_diary():
try:
with open("diary.txt", "r", encoding="utf-8") as f:
print("\n=== 日记存档 ===")
print(f.read())
except FileNotFoundError:
print("还没有日记,快写第一篇吧!")
while True:
print("\n1.写日记 2.看日记 3.退出")
choice = input("请选择:")
if choice == "1":
write_diary()
elif choice == "2":
read_diary()
elif choice == "3":
print("再见!")
break
else:
print("输入错误,请重新选择")
五、避坑指南
-
编码问题解决方案
-
统一使用
encoding="utf-8"
参数 -
遇到乱码时尝试不同编码:
gbk
/gb2312
-
-
文件找不到的常见原因
# 错误写法:路径包含特殊字符
# open("data/2024-03-01.txt", "r") # 斜杠方向可能出错
# 正确写法:使用os.path.join
import os
path = os.path.join("data", "2024-03-01.txt")
学习路线建议
-
今日任务
-
手敲日记本程序并添加自己的功能
-
尝试修改程序保存到不同文件夹
-
-
常见问题
Q:为什么打开文件要加encoding
参数?
A:Windows系统默认编码不是utf-8,显式指定可避免乱码
📢 下期预告:面向对象编程入门(用类重构日记本程序)
🚀 跟着这个系列学习,保你三个月能独立开发小工具!