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

文本写入与读取

题目描述

  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()
相关推荐
梦想不只是梦与想几秒前
SQLAlchemy:查询与操作 (三)
数据库·python·sqlalchemy
计算机编程指导师4 分钟前
【大数据毕设】基于Hadoop+Django乳腺癌数据分析与可视化系统选题推荐 源码 毕业设计 毕设选题 数据分析 机器学习
大数据·hadoop·python·计算机·毕业设计·课程设计·乳腺癌
打工仔折腾 AI7 分钟前
鸿蒙版ToDesk远控实测:蓝牙键鼠、双模式鼠标与跨端剪贴板怎么用
后端·python·华为·性能优化·计算机外设·harmonyos·ai agent 实战
启观川8 分钟前
数据结构与算法 -第 3 章 常用算法-回溯算法
数据结构·笔记·python·算法
计算机编程指导师18 分钟前
Python毕设怎么做?基于hadoop的商家优惠券营销效果数据分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·spark·毕业设计·课程设计·优惠券
计算机编程指导师22 分钟前
【Python毕设推荐】基于Hadoop+Spark的商场商铺运行数据分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·计算机·spark·课程设计·商场商铺
haluhalu.26 分钟前
Agent = LLM + 上下文 + 工具(含观察 / 动作空间、ReAct 循环)
前端·javascript·人工智能·python·react.js·机器学习·个人开发
mldong27 分钟前
给 Django Admin 加审批流:一行前端代码没写,298 行接上工作流引擎
后端·python·架构
kobe_OKOK_8 小时前
__getattr__和__getattribute__如何用
python
全栈弄潮儿9 小时前
Python实战第2期: 变量与数据类型
后端·python·agent