Python零基础通关教程(三):字符串操作与文件读写实战(实现日记本程序)

一、知识衔接:构建完整技能树

前两篇核心内容
✅ 变量与数据类型 ✅ 列表/字典 ✅ 函数基础
本篇新技能点

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("输入错误,请重新选择")

五、避坑指南

  1. 编码问题解决方案

    • 统一使用encoding="utf-8"参数

    • 遇到乱码时尝试不同编码:gbk/gb2312

  2. 文件找不到的常见原因

# 错误写法:路径包含特殊字符
# open("data/2024-03-01.txt", "r")  # 斜杠方向可能出错

# 正确写法:使用os.path.join
import os
path = os.path.join("data", "2024-03-01.txt")

学习路线建议

  1. 今日任务

    • 手敲日记本程序并添加自己的功能

    • 尝试修改程序保存到不同文件夹

  2. 常见问题
    Q:为什么打开文件要加encoding参数?
    A:Windows系统默认编码不是utf-8,显式指定可避免乱码

📢 下期预告:面向对象编程入门(用类重构日记本程序)
🚀 跟着这个系列学习,保你三个月能独立开发小工具! 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值