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

文本写入与读取

题目描述

  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()
相关推荐
叫我:松哥4 分钟前
基于卷积神经网络的静态手势语识别算法,在测试集上的识别准确率达到97.5%
人工智能·python·深度学习·神经网络·算法·cnn
不考研当牛马7 分钟前
Django 框架 深度学习 第二课程
后端·python·django
Dust-Chasing13 分钟前
Claude Code源码剖析 - ShellTool与真实动作
人工智能·python·ai
仙俊红22 分钟前
Java JUC:CompletableFuture 详解,多个任务并行执行并等待全部完成
java·python·spring
学习3人组25 分钟前
Python 评论朴素贝叶斯文本情感分析示例
人工智能·python·机器学习
用户3379225456829 分钟前
A2A Python SDK 源码架构解读:一个请求是如何被处理的
python
2401_8856651929 分钟前
从零搭建卷积神经网络:基于PyTorch实现MNIST手写数字分类
pytorch·python·神经网络·算法·机器学习·分类·cnn
SilentSamsara33 分钟前
MLflow 实验追踪与模型注册:从实验到生产的可复现工作流
开发语言·人工智能·pytorch·python·青少年编程
曲幽34 分钟前
写爬虫时用了代理还被封?Python 代理的那些隐藏坑,我替你踩明白了
python·http·https·proxy·socks·requests·socks5·proxies
装不满的克莱因瓶35 分钟前
掌握多头自注意力机制(Multi-Head Self-Attention)——Transformer 强大表达能力的核心来源
人工智能·python·深度学习·数学·ai·transformer