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

文本写入与读取

题目描述

  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()
相关推荐
杨超越luckly1 小时前
HTML应用指南:利用POST请求获取全国极氪门店位置信息
python·arcgis·html·数据可视化·门店数据
青春不败 177-3266-05201 小时前
最新AI-Python机器学习与深度学习实践技术应用
人工智能·python·深度学习·机器学习·卷积神经网络·语义分割·自编码
三维鱼1 小时前
Python组合数据类型----5.2列表( 5.2.4 )
python
零日失眠者1 小时前
【系统监控系列】005:CPU温度监控脚本
后端·python
远瞻。1 小时前
【环境配置】快速转移conda上的python环境
开发语言·python·conda
上班职业摸鱼人1 小时前
Python迭代器与生成器深度解析:吃透yield关键字,写出高效内存代码
python
棒棒的皮皮1 小时前
【OpenCV】Python图像处理之图像加法运算
图像处理·python·opencv·计算机视觉
熊文豪1 小时前
使用Python快速开发一个MCP服务器
服务器·开发语言·python·mcp
高洁011 小时前
卷积神经网络(CNN)
人工智能·python·深度学习·神经网络·transformer