本测试卷用来检测python开发基础知识,90分及格,可以进行下一步学习。
考试时间:120 分钟 满分:100 分
一、选择题(每题 2 分,共 20 分)
- 以下哪个工具不属于 Python 推荐的开发环境?( )
- A. PyCharm B. VS Code C. Eclipse(未安装 Python 插件) D. IDLE
- 下列关于 Python 变量的说法错误的是?( )
- A. 变量命名可包含字母、数字、下划线,且不能以数字开头
- B. 变量无需声明类型即可直接赋值
- C. 3name = “Python” 是合法的变量定义
- D. 变量赋值后可通过重新赋值改变其类型
- 执行 print(3 **2 // 2 + 7 % 3) 的结果是?( )
- A. 5 B. 6 C. 7 D. 8
- 下列数据结构中,具有 “无序不重复” 特性的是?( )
- A. list B. tuple C. set D. dict
- 关于 Python 函数参数,下列说法正确的是?( )
- A. 关键字参数必须位于位置参数之前
- B. 可变参数*args接收的是键值对数据
- C. 默认参数的默认值应避免使用可变对象(如列表)
- D. **kwargs接收的是位置参数的元组
- 面向对象编程中,super()函数的作用是?( )
- A. 创建子类实例 B. 调用父类的方法
- C. 定义类属性 D. 实现方法重写
- 下列文件打开模式中,既能读又能写且不会覆盖原有内容的是?( )
- A. 'r+' B. 'w+' C. 'a+' D. 'rb'
- 哪个标准库模块可用于处理 JSON 数据?( )
- A. os B. json C. re D. datetime
- 关于生成器的说法错误的是?( )
- A. 生成器通过yield关键字实现
- B. 生成器是惰性求值的,节省内存
- C. 生成器对象可通过list()函数转换为列表
- D. 生成器只能迭代一次
- 下列 Git 命令中,用于将本地提交推送到远程仓库的是?( )
- A. git pull B. git commit C. git push D. git clone
二、填空题(每空 1 分,共 20 分)
- Python 中,布尔值True对应的整数是______,False对应的整数是______。
- 列表推导式[x*2 for x in range(3)]的结果是______。
- 字典的get()方法中,若指定的键不存在,会返回______(默认值)。
- 函数中,使用______关键字声明全局变量,使用______关键字声明非局部变量。
- 面向对象中,__init__方法是______方法,用于初始化实例属性。
- 上下文管理器with open(…) as f的优势是______。
- 捕获所有异常的except语句格式是______。
- collections模块中,______可用于统计元素出现次数,______是双端队列。
- 正则表达式中,d匹配的是______,*表明______。
- 多线程编程使用______模块,协程编程使用______模块。
- 单元测试框架中,______是 Python 内置框架,______是第三方常用框架。
- 虚拟环境创建命令(使用venv模块)是______,激活后安装第三方库使用______命令。
- pathlib模块中,______类用于表明文件路径。
三、判断题(每题 1 分,共 10 分)
- Python 是静态类型语言,变量类型一旦确定不可改变。( )
- 元组是不可变的,因此元组中的元素不能是可变对象(如列表)。( )
- 函数内部修改全局变量时,必须使用global关键字声明。( )
- 多继承时,Python 会按照 MRO(方法解析顺序)查找父类方法。( )
- readline()方法用于读取文件的所有行,返回列表。( )
- 装饰器可以在不修改原函数代码的前提下增强函数功能。( )
- datetime模块的strftime()方法用于将字符串转换为日期对象。( )
- 迭代器对象必须实现__iter__和__next__方法。( )
- git add命令用于将工作区的修改提交到本地仓库。( )
- PEP8 规范要求 Python 代码的缩进使用 4 个空格。( )
四、简答题(每题 5 分,共 20 分)
- 简述 Python 虚拟环境的作用及使用场景。
- 解释装饰器的工作原理,并写出一个简单的装饰器示例(用于统计函数执行时间)。
- 简述面向对象编程的三大特性(封装、继承、多态)的含义。
- 说明try-except-else-finally各部分的执行逻辑。
五、编程题(每题 10 分,共 30 分)
- 编写函数,接收一个列表(包含整数和字符串),返回一个新列表,要求:筛选出所有整数对整数进行去重按从小到大排序
- 示例输入:[1, 2, 3, “a”, 2, 5, “b”, 1],示例输出:[1, 2, 3, 5]
- 定义一个动物类Animal,包含属性name和方法make_sound()(输出通用叫声)。
- 定义子类Dog和Cat,继承自Animal,重写make_sound()方法(分别输出 “汪汪” 和 “喵喵”)。
- 创建Dog和Cat的实例,调用make_sound()方法。
- 编写程序,实现以下功能:读取当前目录下的data.json文件(JSON 格式为{“students”: [{“name”: “张三”, “score”: 90}, …]})计算所有学生的平均分筛选出分数大于等于 90 的学生,写入excellent.json文件(保持 JSON 格式)处理可能出现的异常(文件不存在、JSON 格式错误等)
参考答案及解析
一、选择题(每题 2 分,共 20 分)
|
题号 |
答案 |
解析 |
|
1 |
C |
Eclipse 需安装 Python 插件才能支持 Python 开发,默认不支持 |
|
2 |
C |
变量不能以数字开头,3name是非法命名 |
|
3 |
A |
计算过程:3²=9,9//2=4;7%3=1;4+1=5 |
|
4 |
C |
set(集合)的核心特性是无序不重复 |
|
5 |
C |
A 错误:关键字参数必须在位置参数之后;B 错误:*args接收位置参数元组;D 错误:**kwargs接收键值对字典 |
|
6 |
B |
super()用于在子类中调用父类的方法 |
|
7 |
C |
追加读写模式,文件指针初始在末尾。写入时始终追加到文件末尾,不会覆盖原有内容;同时支持读取(需通过f.seek(0)移动指针到开头) |
|
8 |
B |
json模块提供dumps()/loads()等 JSON 处理函数 |
|
9 |
D |
生成器可多次迭代(需重新创建生成器对象),单次迭代对象只能遍历一次 |
|
10 |
C |
git push推送本地提交到远程;pull拉取远程更新;commit提交到本地仓库;clone克隆远程仓库 |
二、填空题(每空 1 分,共 20 分)
- 1;0
- [0, 2, 4]
- None
- global;nonlocal
- 构造
- 自动关闭文件,避免资源泄露
- except Exception:
- Counter;deque
- 数字字符(0-9);匹配前面的字符 0 次或多次
- threading;asyncio
- unittest;pytest
- python -m venv 虚拟环境名;pip install
- Path
三、判断题(每题 1 分,共 10 分)
- ×(Python 是动态类型语言,变量类型可动态改变)
- ×(元组不可变指的是元组本身的引用不可变,但元组中可以包含可变对象(如列表),只是这些可变对象本身可以改变)
- √(函数内部修改全局变量必须声明global)
- √(Python 多继承遵循 C3 线性化的 MRO 规则)
- ×(readline()读取一行,readlines()读取所有行)
- √(装饰器的核心作用是增强函数功能且不修改原代码)
- ×(strftime()将日期对象转为字符串,strptime()将字符串转为日期对象)
- √(迭代器协议要求实现这两个方法)
- ×(git add将修改添加到暂存区,git commit提交到本地仓库)
- √(PEP8 规范明确缩进使用 4 个空格)
四、简答题(每题 5 分,共 20 分)
- 虚拟环境的作用及场景:作用:隔离不同项目的依赖包,避免版本冲突(如 A 项目需要 requests==2.20,B 项目需要 requests==3.0)。场景:多项目开发时、团队协作时(统一依赖环境)、部署时(精简依赖)。
- 装饰器工作原理及示例:原理:装饰器是高阶函数,接收原函数作为参数,返回一个新函数(增强后的函数),通过@语法简化调用。示例:
- python
- 运行
- import time def time_count(func): def wrapper(*args, **kwargs): start = time.time() result = func(*args, **kwargs) end = time.time() print(f”函数执行时间:{end – start:.2f}秒”) return result return wrapper @time_count def test(): time.sleep(1) test() # 输出:函数执行时间:1.00秒
- OOP 三大特性:封装:将属性和方法封装在类中,隐藏内部实现细节,通过接口对外提供服务(如私有属性__name)。继承:子类继承父类的属性和方法,减少代码冗余,支持扩展(如Dog(Animal))。多态:不同子类重写父类方法,统一调用接口可呈现不同行为(如dog.make_sound()和cat.make_sound()输出不同)。
- try-except-else-finally 执行逻辑:try:包含可能抛出异常的代码块。except:捕获 try 块中抛出的异常并处理,可指定异常类型。else:若 try 块中无异常发生,则执行 else 块(在 except 之后、finally 之前)。finally:无论是否发生异常,都会执行(用于释放资源,如关闭文件)。
五、编程题(每题 10 分,共 30 分)
- 筛选整数并去重排序:
python
运行
def filter_sort_numbers(lst):
return sorted(set(x for x in lst if isinstance(x, int)))
# 测试
input_lst = [1, 2, 3, "a", 2, 5, "b", 1]
print(filter_sort_numbers(input_lst)) # 输出:[1, 2, 3, 5]
- 面向对象动物类实现:
python
运行
class Animal:
def __init__(self, name):
self.name = name # 实例属性
def make_sound(self):
print(f"{self.name}发出通用叫声")
class Dog(Animal):
def make_sound(self): # 重写父类方法
print(f"{self.name}汪汪叫")
class Cat(Animal):
def make_sound(self): # 重写父类方法
print(f"{self.name}喵喵叫")
# 测试
dog = Dog("大黄")
cat = Cat("小白")
dog.make_sound() # 输出:大黄汪汪叫
cat.make_sound() # 输出:小白喵喵叫
- JSON 文件读写与异常处理:
python
运行
import json
from pathlib import Path
def process_student_scores():
# 定义文件路径
input_path = Path("data.json")
output_path = Path("excellent.json")
try:
# 读取JSON文件
with open(input_path, "r", encoding="utf-8") as f:
try:
data = json.load(f)
students = data.get("students", [])
if not isinstance(students, list):
raise ValueError("students字段必须是列表")
except json.JSONDecodeError:
print("错误:JSON格式无效")
return
# 计算平均分
if not students:
print("警告:没有学生数据")
average = 0
else:
# 确保score是数字类型
scores = [s.get("score", 0) for s in students if isinstance(s.get("score"), (int, float))]
if not scores:
print("错误:没有有效的分数数据")
return
average = sum(scores) / len(scores)
# 筛选优秀学生(≥90分)
excellent = [s for s in students if s.get("score", 0) >= 90]
# 写入文件
with open(output_path, "w", encoding="utf-8") as f:
json.dump({"excellent_students": excellent}, f, ensure_ascii=False, indent=2)
print(f"优秀学生已写入{output_path}")
except FileNotFoundError:
print(f"错误:文件{input_path}不存在")
except Exception as e:
print(f"未知错误:{str(e)}")
# 执行
process_student_scores()
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...



