当前位置: 首页 > news >正文

20260714python暑假班第三次作业

第1题(IO流-文本)

编写程序:读取article.txt,统计文件中英文单词出现总数量(只统计单词,忽略数字、标点符号)

并将统计结果写入result.txt

要求:使用with语法,文件编码utf-8

import re def count_english_words(text): """ 统计文本中的英文单词数量 只统计由字母组成的单词,忽略数字和标点符号 """ # 使用正则表达式匹配英文单词(只包含字母) # 匹配连续的英文字母(包括大写和小写) words = re.findall(r'[a-zA-Z]+', text) return len(words) def main(): try: # 使用with语法读取article.txt with open('article.txt', 'r', encoding='utf-8') as file: content = file.read() # 统计英文单词数量 word_count = count_english_words(content) # 使用with语法写入result.txt with open('result.txt', 'w', encoding='utf-8') as file: file.write(f'英文单词总数量: {word_count}') print(f'统计完成!英文单词总数量: {word_count}') print('结果已写入 result.txt') except FileNotFoundError: print('错误: 找不到 article.txt 文件') except Exception as e: print(f'发生错误: {e}') if __name__ == '__main__': main()

第2题(IO流-读写模式综合)

现有文件record.log,编写代码:

1.如果文件不存在则创建;

2.在文件末尾追加一行:2026-07-27 操作完成

3.追加完成后读取文件全部内容打印到控制台

提示:注意光标位置,选对打开模式

import os from datetime import datetime def main(): filename = 'record.log' try: # 1. 如果文件不存在则创建,并在末尾追加内容 # 使用 'a+' 模式:如果文件不存在则创建,存在则在末尾追加,同时支持读取 with open(filename, 'a+', encoding='utf-8') as file: # 追加一行日志信息 log_entry = '2026-07-27 操作完成' file.write(log_entry + '\n') # 2. 追加完成后读取文件全部内容 # 注意:追加操作后,文件指针在末尾,需要移动到文件开头才能读取 file.seek(0) # 将文件指针移动到文件开头 # 读取全部内容 content = file.read() # 打印到控制台 print('文件内容:') print('-' * 40) print(content) print('-' * 40) except Exception as e: print(f'发生错误: {e}') if __name__ == '__main__': main()

第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

写出两个文件完整代码

# math_tool.py - 自定义数学工具模块 import math def calc_area(r): """ 计算圆的面积 参数: r - 圆的半径 返回: 圆的面积 """ if r < 0: raise ValueError("半径不能为负数") return math.pi * r ** 2 def calc_circum(r): """ 计算圆的周长 参数: r - 圆的半径 返回: 圆的周长 """ if r < 0: raise ValueError("半径不能为负数") return 2 * math.pi * r # 模块测试代码(只在直接运行模块时执行) if __name__ == '__main__': # 测试函数 test_radius = 5 print(f"半径 {test_radius} 的圆面积: {calc_area(test_radius):.2f}") print(f"半径 {test_radius} 的圆周长: {calc_circum(test_radius):.2f}")
# main.py - 演示两种不同的模块导入方式 import math_tool # 方式1:导入整个模块 from math_tool import calc_area, calc_circum # 方式2:导入特定函数 def main(): radius = 10 print("=" * 50) print("方式1: import math_tool") print("-" * 50) # 方式1:使用模块名调用函数 area1 = math_tool.calc_area(radius) circum1 = math_tool.calc_circum(radius) print(f"半径 {radius} 的圆面积: {area1:.2f}") print(f"半径 {radius} 的圆周长: {circum1:.2f}") print("\n" + "=" * 50) print("方式2: from math_tool import calc_area, calc_circum") print("-" * 50) # 方式2:直接调用函数(无需模块名前缀) area2 = calc_area(radius) circum2 = calc_circum(radius) print(f"半径 {radius} 的圆面积: {area2:.2f}") print(f"半径 {radius} 的圆周长: {circum2:.2f}") print("\n" + "=" * 50) print("两种方式比较:") print("-" * 50) print("方式1 优点: 命名空间清晰,避免函数名冲突") print("方式1 缺点: 每次调用都需要写模块名前缀") print("方式2 优点: 代码简洁,直接调用函数") print("方式2 缺点: 可能导致命名冲突") if __name__ == '__main__': main()

第4题(模块-标准库os模块)

使用os标准库完成:

1.遍历当前文件夹,打印所有后缀为.txt的文件名:

2.创建文件夹backup

3.加判断条件如果backup文件夹已存在不要报错

import os def main(): # 1. 遍历当前文件夹,打印所有后缀为.txt的文件名 print("所有 .txt 文件:") for item in os.listdir('.'): if item.endswith('.txt') and os.path.isfile(item): print(f" {item}") # 2. 创建文件夹backup # 3. 如果backup文件夹已存在不要报错 folder_name = 'backup' if not os.path.exists(folder_name): os.mkdir(folder_name) print(f"文件夹 '{folder_name}' 创建成功") else: print(f"文件夹 '{folder_name}' 已存在") if __name__ == '__main__': main()

第5题

使用os和os.path以及函数的递归完成:

给出一个路径,遍历当前路径所有的文件及文件夹

打印输出所有的文件(遇到文件输出路径,遇到文件夹继续进文件夹)

import os def list_all(path): """递归列出所有文件和文件夹的路径""" try: for item in os.listdir(path): full_path = os.path.join(path, item) print(full_path) if os.path.isdir(full_path): list_all(full_path) # 递归进入文件夹 except PermissionError: pass # 忽略权限错误 def main(): path = input("请输入目录路径(直接回车为当前目录): ").strip() if not path: path = '.' if os.path.exists(path) and os.path.isdir(path): list_all(path) else: print("路径无效") if __name__ == '__main__': main()
http://www.jsqmd.com/news/1285085/

相关文章:

  • 基于树莓派与OpenCV的智能跟随风扇DIY:从传感器选型到PID控制
  • 2026年7月乳酸/乳酸钾实力公司推荐_青岛九泰生物科技有限公司 - 行业平台推荐
  • 2.线性回归与逻辑回归
  • 嵌入式Linux开发板Qt程序从零到一:环境搭建、交叉编译与部署实战
  • 2026AI抠图工具全解:电脑、手机、网页、小程序多端实操指南 - 爱上科技热点
  • 2026年7月广东天成织针/广东织针公司推荐测评_佛山市昕宸针织有限公司 - 行业平台推荐
  • Linux系统libcrypto.so.10缺失:OpenSSL 1.0.2k源码编译与兼容性解决方案
  • ANSYS Fluent在电池组热管理中的仿真应用与优化
  • Processing与Arduino串口通信实战:从原理到双向交互项目
  • ESP32-S3驱动VGA显示器实现3D球体实时渲染
  • VMware Horizon 8.0入门④--AD域服务器部署
  • 基于ESP32与ADS1115的智能抗干扰测量系统设计与实现
  • CADS系统 Docker+K8s 完整部署实战教程
  • 2026年7月十堰空调移机/十堰搬家正规公司推荐_十堰顺发搬家有限公司 - 品牌宣传支持者
  • 2026 年新消息:南靖口碑好的植草格加工厂格局重塑与选型新思路,踩破地砖的网红停车场,竟靠这玩意儿省出半万维护费?-梦航工程材料 - 鉴选官
  • 2026年7月广东会议音响设备/政企会议音响行业厂家推荐_广东得胜电声有限公司 - 品牌宣传支持者
  • GNURadio中USRP组件核心原理与实战配置指南
  • STM32与LTE Cat-1模块实现物联网全球连接方案
  • 2026年7月压力试验机/力学设备厂家优选推荐_山西晋仪科技有限公司 - 行业平台推荐
  • AI赋能智慧城市:3年验证的5类刚需场景落地公式(附可复用技术架构图)
  • C++/QT实现与MATLAB一致的短时傅里叶变换(STFT)时频分析
  • WinSock C++网络编程实战:从TCP/UDP基础到高性能服务器开发
  • AI如何革新学术写作:智能助手的技术架构与应用
  • 零基础用豆包AI、即梦和剪映,几分钟做出胖橘猫动画
  • 云原生弹性伸缩与混部技术实战解析
  • 配资平台规范发展持续推进核心内容公开
  • UniApp微信小程序分享功能全解析:从原理到实战避坑指南
  • 2026年7月耐高温不锈钢丝/化工设备专用耐腐蚀不锈钢丝公司精选推荐_泰州市凯威不锈钢制品有限公司 - 品牌宣传支持者
  • C++指针详解:从基础到智能指针实战
  • 安徽区域包装纸盒行业优质厂商分析分析报告,抽纸/食品打包盒/包装盒/手提袋/药店抽纸/商用纸巾,包装盒厂家哪家靠谱 - 品牌推荐师