文件读写和异常处理练习题

文本写入与读取

题目描述

  1. 创建一个名为 student.txt 的文件
  2. 写入 3 名学生的信息(格式:姓名,年龄,成绩)
  3. 关闭文件后重新读取该文件,逐行打印学生信息

输出示例

读取到的学生信息:
姓名:张三,年龄:18,成绩:95
姓名:李四,年龄:19,成绩:88
姓名:王五,年龄:17,成绩:92

实现代码

python 复制代码
# 步骤1:写入学生信息
students = [
    "张三,18,95",
    "李四,19,88",
    "王五,17,92"
]

# 写入文件(w模式,自动创建/覆盖)
with open("student.txt", "w", encoding="utf-8") as file:
    file.writelines(line + "\n" for line in students)  # 每行添加换行符

# 步骤2:读取并打印学生信息
print("读取到的学生信息:")
with open("student.txt", "r", encoding="utf-8") as file:
    for line in file:
        name, age, score = line.strip().split(",")  # 分割字符串
        print(f"姓名:{name},年龄:{age},成绩:{score}")

文件内容追加与统计

题目描述

  1. 向上一题 的 student.txt 中追加 2 名学生信息
  2. 统计文件中所有学生的平均成绩
  3. 将平均成绩写入文件末尾(格式:平均成绩:XX

输出示例

所有学生平均成绩:92.2

最终 student.txt 内容:

张三,18,95

李四,19,88

王五,17,92

赵六,18,90

孙七,17,96

平均成绩:92.2

实现代码

python 复制代码
# 步骤1:追加2名学生信息
new_students = [
    "赵六,18,90",
    "孙七,17,96"
]

with open("student.txt", "a", encoding="utf-8") as file:
    file.writelines(line + "\n" for line in new_students)

# 步骤2:读取所有成绩并计算平均值
scores = []
with open("student.txt", "r", encoding="utf-8") as file:
    for line in file:
        line = line.strip()
        if not line or "平均成绩" in line:  # 跳过空行和已有平均成绩行
            continue
        _, _, score = line.split(",")
        scores.append(float(score))

average = sum(scores) / len(scores)
print(f"所有学生平均成绩:{average:.1f}")

# 步骤3:将平均成绩追加到文件末尾
with open("student.txt", "a", encoding="utf-8") as file:
    file.write(f"平均成绩:{average:.1f}\n")

基础异常处理

题目描述

编写一个程序,要求用户输入两个数字进行除法运算。处理除零异常和输入非数字的异常。

输出示例

请输入第一个数字:10

请输入第二个数字:0

错误:除数不能为零!

请输入第一个数字:10

请输入第二个数字:abc

错误:请输入有效的数字!

实现代码

python 复制代码
def divide_numbers():
    try:
        # 获取用户输入
        num1 = input("请输入第一个数字:")
        num2 = input("请输入第二个数字:")
        
        # 转换为浮点数
        num1 = float(num1)
        num2 = float(num2)
        
        # 执行除法运算
        result = num1 / num2
        print(f"结果:{num1} / {num2} = {result}")
        
    except ValueError:
        print("错误:请输入有效的数字!")
    except ZeroDivisionError:
        print("错误:除数不能为零!")

# 测试函数
divide_numbers()

文件读取计数器

题目描述

读取文件并统计行数,使用 else 显示统计结果,finally 显示关闭文件。

输出示例

请输入文件名:data.txt

文件共有 5 行内容

文件已关闭,程序结束。

请输入文件名:nonexistent.txt

错误:文件不存在!

文件已关闭,程序结束。

实现代码

python 复制代码
def file_line_counter():
    file = None
    try:
        filename = input("请输入文件名:")
        file = open(filename, 'r', encoding='utf-8')
        lines = file.readlines()
        line_count = len(lines)
        
    except FileNotFoundError:
        print("错误:文件不存在!")
        
    else:
        print(f"文件共有 {line_count} 行内容")
        
    finally:
        if file:
            file.close()
        print("文件已关闭,程序结束。")

# 测试函数
file_line_counter()
相关推荐
wj3055853786 小时前
课程 9:模型测试记录与 Prompt 策略
linux·人工智能·python·comfyui
星寂樱易李6 小时前
iperf3 + Python-- 网络带宽、网速、网络稳定性
开发语言·网络·python
qingfeng154157 小时前
企业微信机器人开发:如何实现自动化与智能运营?
人工智能·python·机器人·自动化·企业微信
彦为君10 小时前
Agent 安全:从权限提示到沙箱隔离
python·ai·ai编程
PILIPALAPENG10 小时前
Python 语法速成指南:前端开发者视角(JS 类比版)
前端·人工智能·python
用户83562907805111 小时前
Python 操作 PowerPoint 页眉与页脚指南
后端·python
枫叶林FYL12 小时前
项目九:异步高性能爬虫与数据采集中枢 —— 基于 Crawl<sub>4</sub>AI 与 Playwright 的现代化数据采集平台 项目总览
爬虫·python·深度学习·wpf
猫猫的小茶馆12 小时前
【Python】函数与模块化编程
linux·开发语言·arm开发·驱动开发·python·stm32
Miss_min13 小时前
128K长序列数据生成
开发语言·python·深度学习