python第三次作业

第1题(IO流‑文本)
编写程序:读取 article.txt ,统计文件中英文单词出现总数量(只统计单词,忽略数字、标点符号),
并将统计结果写入 result.txt 。
要求:使用 with 语法,文件编码 utf‑8 。

代码:

import re  

with open('article.txt', 'r', encoding='utf-8') as f:
    text = f.read()  
word_list = re.findall(r'[a-zA-Z]+', text)
total = len(word_list)  
with open('result.txt', 'w', encoding='utf-8') as f:
    f.write(f'英文单词总数量:{total}')
print(f'统计完成,共 {total} 个单词,结果已保存到 result.txt')

运行结果:

思路分析:

使用with语法提取源文件,提取并统计单词数量,[a-zA-Z]+ 匹配所有连续的大小写英文字母,自动忽略数字、标点、空格、中文;使用with语法将统计的结果写入结果文件,指定encoding='utf-8',避免出现乱码。

第2题(IO流‑读写模式综合)
现有文件 record.log ,编写代码:
1. 如果文件不存在则创建;
2. 在文件末尾追加一行: 2026‑07‑27 操作完成 ;
3. 追加完成后读取文件全部内容打印到控制台。
提示:注意光标位置,选对打开模式。

代码:

with open('record.log', 'a+', encoding='utf-8') as f:
    f.write('\n2026-07-27 操作完成')
    f.seek(0)
    all_content = f.read()
    print('文件全部内容如下:')
    print(all_content)

运行结果:

思路分析:

a+ 模式 = 追加写入 + 可读;文件不存在时会自动创建;追加一行内容,前面加 \n 保证每次都另起一行;写入后光标停在文件末尾,直接read()会读到空内容 ,用 seek(0) 把光标移动到文件最开头;最后读取全部内容并打印。

第3题(模块‑自定义模块)
1. 创建自定义模块 math_tool.py ,内部实现两个函数:
-  calc_area(r) :计算圆面积
-  calc_circum(r) :计算圆周长
2. 在另一个文件 main.py ,用两种不同导入方式调用这两个函数:
- 方式1: import math_tool 
- 方式2: from math_tool import calc_area, calc_circum 
写出两个文件完整代码。
 

代码:

1.

import math  

def calc_area(r):
    """计算圆的面积,参数r为半径"""
    return math.pi * r * r

def calc_circum(r):
    """计算圆的周长,参数r为半径"""
    return 2 * math.pi * r

2.

import math_tool

area1 = math_tool.calc_area(5)
len1 = math_tool.calc_circum(5)
print("方式1运行结果:")
print(f"半径5的圆面积:{area1:.2f}")
print(f"半径5的圆周长:{len1:.2f}")

from math_tool import calc_area, calc_circum
area2 = calc_area(10)
len2 = calc_circum(10)
print("\n方式2运行结果:")
print(f"半径10的圆面积:{area2:.2f}")
print(f"半径10的圆周长:{len2:.2f}")

运行结果:

思路分析:

首先创建模块文件,创建对应的计算圆面积与圆周长的函数;之后创建主程序,必须将主程序和模块文件放在同一文件夹中,否则无法导入;

导入方式一:直接使用import导入整个模块,再调用,调用的格式 ---- 模块名.函数名(参数);

导入方式二:rom 模块 import 指定函数,调用格式 ---直接写函数名,不用加模块前缀。

第4题(模块‑标准库os模块)
使用 os 标准库完成:
1. 遍历当前文件夹,打印所有后缀为 .txt 的文件名;
2. 创建文件夹 backup ;
3. 加判断条件如果backup文件夹已存在不要报错。

代码:

import os

print("当前目录下的txt文件:")
for name in os.listdir('.'):
    if name.endswith('.txt'):
        print(name)

if not os.path.exists('backup'):
    os.mkdir('backup')  # 不存在才执行创建
    print("\nbackup 文件夹创建成功")
else:
    print("\nbackup 文件夹已存在,无需重复创建")

运行结果:

思路分析:

首先遍历当前的文件夹,打印所有.txt后缀的文件,使用os.listdir('.') 获取当前文件夹下所有文件、文件夹的名称,endswith 判断字符串是否以指定后缀结尾;创建backup文件夹,已存在不操作,不存在执行创建。

第5题
使用os和os.path以及函数的递归完成:
给出一个路径,遍历当前路径所有的文件及文件夹
打印输出所有的文件(遇到文件输出路径,遇到文件夹继续进文件夹)

代码:

import os

def scan_files(dir_path):
    
    if not os.path.exists(dir_path):
        print(f"错误:路径 {dir_path} 不存在")
        return

    for name in os.listdir(dir_path):
        full_path = os.path.join(dir_path, name)
        if os.path.isfile(full_path):
            print(full_path)
        elif os.path.isdir(full_path):
            scan_files(full_path)
            
if __name__ == '__main__':
    print("所有文件的完整路径:")
    scan_files('.')

运行结果:

思路分析:

递归遍历文件夹,打印所有文件的完整路径;:param dir_path: 要遍历的根目录路径 ,先判断路径是否合法,避免程序崩溃,再遍历当前目录下的所有条目如果是文件,直接打印路径,如果是文件夹,递归调用自己,继续往里遍历。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值