004_Python 基础核心知识综合测试卷

内容分享3小时前发布
0 0 0

本测试卷用来检测python开发基础知识,90分及格,可以进行下一步学习。

考试时间:120 分钟 满分:100 分

一、选择题(每题 2 分,共 20 分)

  1. 以下哪个工具不属于 Python 推荐的开发环境?( )
  2. A. PyCharm B. VS Code C. Eclipse(未安装 Python 插件) D. IDLE
  3. 下列关于 Python 变量的说法错误的是?( )
  4. A. 变量命名可包含字母、数字、下划线,且不能以数字开头
  5. B. 变量无需声明类型即可直接赋值
  6. C. 3name = “Python” 是合法的变量定义
  7. D. 变量赋值后可通过重新赋值改变其类型
  8. 执行 print(3 **2 // 2 + 7 % 3) 的结果是?( )
  9. A. 5 B. 6 C. 7 D. 8
  10. 下列数据结构中,具有 “无序不重复” 特性的是?( )
  11. A. list B. tuple C. set D. dict
  12. 关于 Python 函数参数,下列说法正确的是?( )
  13. A. 关键字参数必须位于位置参数之前
  14. B. 可变参数*args接收的是键值对数据
  15. C. 默认参数的默认值应避免使用可变对象(如列表)
  16. D. **kwargs接收的是位置参数的元组
  17. 面向对象编程中,super()函数的作用是?( )
  18. A. 创建子类实例 B. 调用父类的方法
  19. C. 定义类属性 D. 实现方法重写
  20. 下列文件打开模式中,既能读又能写且不会覆盖原有内容的是?( )
  21. A. 'r+' B. 'w+' C. 'a+' D. 'rb'
  22. 哪个标准库模块可用于处理 JSON 数据?( )
  23. A. os B. json C. re D. datetime
  24. 关于生成器的说法错误的是?( )
  25. A. 生成器通过yield关键字实现
  26. B. 生成器是惰性求值的,节省内存
  27. C. 生成器对象可通过list()函数转换为列表
  28. D. 生成器只能迭代一次
  29. 下列 Git 命令中,用于将本地提交推送到远程仓库的是?( )
  30. A. git pull B. git commit C. git push D. git clone

二、填空题(每空 1 分,共 20 分)

  1. Python 中,布尔值True对应的整数是______,False对应的整数是______。
  2. 列表推导式[x*2 for x in range(3)]的结果是______。
  3. 字典的get()方法中,若指定的键不存在,会返回______(默认值)。
  4. 函数中,使用______关键字声明全局变量,使用______关键字声明非局部变量。
  5. 面向对象中,__init__方法是______方法,用于初始化实例属性。
  6. 上下文管理器with open(…) as f的优势是______。
  7. 捕获所有异常的except语句格式是______。
  8. collections模块中,______可用于统计元素出现次数,______是双端队列。
  9. 正则表达式中,d匹配的是______,*表明______。
  10. 多线程编程使用______模块,协程编程使用______模块。
  11. 单元测试框架中,______是 Python 内置框架,______是第三方常用框架。
  12. 虚拟环境创建命令(使用venv模块)是______,激活后安装第三方库使用______命令。
  13. pathlib模块中,______类用于表明文件路径。

三、判断题(每题 1 分,共 10 分)

  1. Python 是静态类型语言,变量类型一旦确定不可改变。( )
  2. 元组是不可变的,因此元组中的元素不能是可变对象(如列表)。( )
  3. 函数内部修改全局变量时,必须使用global关键字声明。( )
  4. 多继承时,Python 会按照 MRO(方法解析顺序)查找父类方法。( )
  5. readline()方法用于读取文件的所有行,返回列表。( )
  6. 装饰器可以在不修改原函数代码的前提下增强函数功能。( )
  7. datetime模块的strftime()方法用于将字符串转换为日期对象。( )
  8. 迭代器对象必须实现__iter__和__next__方法。( )
  9. git add命令用于将工作区的修改提交到本地仓库。( )
  10. PEP8 规范要求 Python 代码的缩进使用 4 个空格。( )

四、简答题(每题 5 分,共 20 分)

  1. 简述 Python 虚拟环境的作用及使用场景。
  2. 解释装饰器的工作原理,并写出一个简单的装饰器示例(用于统计函数执行时间)。
  3. 简述面向对象编程的三大特性(封装、继承、多态)的含义。
  4. 说明try-except-else-finally各部分的执行逻辑。

五、编程题(每题 10 分,共 30 分)

  1. 编写函数,接收一个列表(包含整数和字符串),返回一个新列表,要求:筛选出所有整数对整数进行去重按从小到大排序
  2. 示例输入:[1, 2, 3, “a”, 2, 5, “b”, 1],示例输出:[1, 2, 3, 5]
  3. 定义一个动物类Animal,包含属性name和方法make_sound()(输出通用叫声)。
  4. 定义子类Dog和Cat,继承自Animal,重写make_sound()方法(分别输出 “汪汪” 和 “喵喵”)。
  5. 创建Dog和Cat的实例,调用make_sound()方法。
  6. 编写程序,实现以下功能:读取当前目录下的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. 1;0
  2. [0, 2, 4]
  3. None
  4. global;nonlocal
  5. 构造
  6. 自动关闭文件,避免资源泄露
  7. except Exception:
  8. Counter;deque
  9. 数字字符(0-9);匹配前面的字符 0 次或多次
  10. threading;asyncio
  11. unittest;pytest
  12. python -m venv 虚拟环境名;pip install
  13. Path

三、判断题(每题 1 分,共 10 分)

  1. ×(Python 是动态类型语言,变量类型可动态改变)
  2. ×(元组不可变指的是元组本身的引用不可变,但元组中可以包含可变对象(如列表),只是这些可变对象本身可以改变)
  3. √(函数内部修改全局变量必须声明global)
  4. √(Python 多继承遵循 C3 线性化的 MRO 规则)
  5. ×(readline()读取一行,readlines()读取所有行)
  6. √(装饰器的核心作用是增强函数功能且不修改原代码)
  7. ×(strftime()将日期对象转为字符串,strptime()将字符串转为日期对象)
  8. √(迭代器协议要求实现这两个方法)
  9. ×(git add将修改添加到暂存区,git commit提交到本地仓库)
  10. √(PEP8 规范明确缩进使用 4 个空格)

四、简答题(每题 5 分,共 20 分)

  1. 虚拟环境的作用及场景:作用:隔离不同项目的依赖包,避免版本冲突(如 A 项目需要 requests==2.20,B 项目需要 requests==3.0)。场景:多项目开发时、团队协作时(统一依赖环境)、部署时(精简依赖)。
  2. 装饰器工作原理及示例:原理:装饰器是高阶函数,接收原函数作为参数,返回一个新函数(增强后的函数),通过@语法简化调用。示例:
  3. python
  4. 运行
  5. 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秒
  6. OOP 三大特性:封装:将属性和方法封装在类中,隐藏内部实现细节,通过接口对外提供服务(如私有属性__name)。继承:子类继承父类的属性和方法,减少代码冗余,支持扩展(如Dog(Animal))。多态:不同子类重写父类方法,统一调用接口可呈现不同行为(如dog.make_sound()和cat.make_sound()输出不同)。
  7. try-except-else-finally 执行逻辑:try:包含可能抛出异常的代码块。except:捕获 try 块中抛出的异常并处理,可指定异常类型。else:若 try 块中无异常发生,则执行 else 块(在 except 之后、finally 之前)。finally:无论是否发生异常,都会执行(用于释放资源,如关闭文件)。

五、编程题(每题 10 分,共 30 分)

  1. 筛选整数并去重排序

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]
  1. 面向对象动物类实现

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()  # 输出:小白喵喵叫
  1. 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()

© 版权声明

相关文章

暂无评论

none
暂无评论...