Python 基础语法(上篇 + 下篇)——综合自测题
Python 基础语法(上篇 + 下篇)——综合自测题
📋 自测说明
- 适用章节:第一期(环境搭建与数据基石)+ 第二期(运算符全解与实战演练)
- 题型设置:填空题(10题)、判断题(10题)、代码改错题(5题)、代码补全题(4题)、简答题(4题)、实战输出题(4题)
- 难度梯度:⭐(基础)→ ⭐⭐(中等)→ ⭐⭐⭐(综合)
- 建议时长:60~90 分钟
- 答案位置:本自测题末尾附完整答案与解析
一、填空题(每空 2 分,共 20 分)
请将正确答案填写在横线上。
- Python 安装成功后,在命令行中输入
________可以查看已安装的 Python 版本号。(⭐) - 在 pip 的配置文件中,
index-url参数用于指定 ________。(⭐) - Python 中使用 ________ 个空格作为标准缩进单位。(⭐)
- 以下变量的命名中,符合 Python 命名规范的是:________(填序号)。(⭐)
- A.
2nd_place - B.
student_name - C.
class(保留字) - D.
StudentName(类名规范,非变量)
- A.
- 在 Python 中,
True等价于整数 ____,False等价于整数 ____。(⭐) int(3.99)的返回值是 ____。(⭐)- 表达式
10 // 3的返回值是 ____,10 % 3的返回值是 ____。(⭐) - Python 中逻辑运算符
and和or遵循 ________ 求值原则。(⭐) - 字符串
'hello'.upper()的返回值是 ________。(⭐) - 表达式
~9的返回值是 ____。(⭐⭐)
二、判断题(每题 2 分,共 20 分)
判断下列说法是否正确,正确的打✓,错误的打✗。
- ( )Python 中的变量必须先声明类型才能使用。
- ( )
list和tuple的主要区别之一是 list 可变而 tuple 不可变。 - ( )在 Python 中,
/和//的运算结果类型完全相同。 - ( )字典中的键(key)可以是列表类型。
- ( )
f-string格式化字符串时,{}中可以写任意合法的 Python 表达式。 - ( )
continue语句会终止整个循环的执行。 - ( )
in运算符可以判断一个元素是否在字符串、列表、元组和字典的值中。 - ( )
strip()方法默认只能删除字符串两端的空格,不能删除其他字符。 - ( )
range(1, 10, 2)生成的序列包含数字 9。 - ( )
isinstance(3.14, int)的返回值为True。
三、代码改错题(每题 4 分,共 20 分)
以下每段代码均有 1~2 处错误,请指出错误并给出修正后的代码。
第 1 题(⭐)
python
score = input("请输入成绩:") if score >= 60: print("及格") else: print("不及格")第 2 题(⭐)
python
i = 1 while i <= 10 print(i) i += 1第 3 题(⭐⭐)
python
name = "张三" age = 18 info = "姓名:" + name + ",年龄:" + age + "岁" print(info)第 4 题(⭐⭐)
python
numbers = [1, 2, 3, 4, 5] for i in range(5): if i == 3: continue print(numbers[i]) else: print("循环正常结束")第 5 题(⭐⭐)
python
text = " Hello World " text.strip() print(text)四、代码补全题(每题 5 分,共 20 分)
请根据注释提示,补全以下代码中缺失的部分。
第 1 题(⭐):计算 1 到 100 的累加和
python
total = 0 i = 1 while ________: # 补全循环条件 total += i ________ # 补全循环变量的更新 print(f"1到100的和为:{total}")第 2 题(⭐⭐):判断一个数是否为偶数,并输出对应的布尔值
python
num = 8 is_even = ________ # 补全表达式,判断是否为偶数 print(f"{num} 是偶数:{is_even}")第 3 题(⭐⭐):使用列表推导式生成 1~20 中所有偶数的平方
python
numbers = range(1, 21) squares_of_even = ________ # 补全列表推导式 print(squares_of_even)第 4 题(⭐⭐):将列表中的字符串按指定格式拼接
python
fruits = ["苹果", "香蕉", "橙子"] result = ________ # 使用 join 方法拼接,用 " | " 分隔 print(result) # 期望输出:苹果 | 香蕉 | 橙子五、简答题(每题 5 分,共 20 分)
第 1 题(⭐):请简述 Python 中/和//运算符的区别,并各举一个示例。
第 2 题(⭐⭐):简述 Python 中break和continue语句的区别,并说明它们分别在什么场景下使用。
第 3 题(⭐⭐):请简述list、tuple、set、dict四种数据类型的核心区别(从是否可变、是否有序、元素是否唯一三个维度对比)。
第 4 题(⭐⭐⭐):请简述%格式化、format()方法和f-string三种字符串格式化方式的优劣,并说明在实际开发中如何选择。
六、实战输出题(每题 5 分,共 20 分)
请写出以下程序的运行结果(或执行效果描述)。
第 1 题(⭐):写出以下代码的运行结果。
python
x = 5 y = 2 print(x + y) print(x - y) print(x * y) print(x / y) print(x // y) print(x ** y)第 2 题(⭐⭐):写出以下代码的运行结果。
python
text = "Python" result = "" for char in text: if char == "o": continue result += char print(result)第 3 题(⭐⭐⭐):写出以下代码的运行结果。
python
a = 10 b = 20 result = (a > b) and (b > 0) print(result) result = (a < b) or (b < 0) print(result) result = not (a == 10) print(result)第 4 题(⭐⭐⭐):写出以下代码的运行结果。
python
def demo(): for i in range(1, 4): for j in range(1, i + 1): print(j, end="") print() demo()📝 答案与解析
一、填空题答案
| 题号 | 答案 | 解析 |
|---|---|---|
| 1 | python --version | 验证 Python 是否安装成功并查看版本 |
| 2 | 镜像源(或 PyPI 镜像服务器地址) | index-url指定包下载的源地址 |
| 3 | 4 | PEP 8 推荐使用 4 个空格作为缩进 |
| 4 | B.student_name | 小写 + 下划线是 Python 变量命名的推荐风格 |
| 5 | 1,0 | bool是int的子类 |
| 6 | 3 | 浮点数转整数直接截断小数部分 |
| 7 | 3,1 | 10 // 3 = 3,10 % 3 = 1 |
| 8 | 短路 | 当结果确定时不再计算剩余表达式 |
| 9 | 'HELLO' | 将所有字母转为大写 |
| 10 | -10 | 按位取反公式~x = -x - 1 |
二、判断题答案
| 题号 | 答案 | 解析 |
|---|---|---|
| 1 | ✗ | Python 是动态类型语言,变量无需预先声明类型 |
| 2 | ✓ | list 可变(增删改),tuple 不可变 |
| 3 | ✗ | /返回浮点数,//返回整数(整除) |
| 4 | ✗ | 字典的键必须是不可变类型,列表是可变类型 |
| 5 | ✓ | {}中可以写变量、运算、函数调用等表达式 |
| 6 | ✗ | continue只跳过本次循环,不终止整个循环 |
| 7 | ✗ | 字典中的in判断的是键,不是值 |
| 8 | ✗ | strip()可传入参数删除指定字符 |
| 9 | ✓ | range(1, 10, 2)生成 1, 3, 5, 7, 9 |
| 10 | ✗ | 3.14是float类型,isinstance(3.14, int)返回False |
三、代码改错题答案
第 1 题(⭐)
- 错误:
input()返回的是字符串,直接与整数比较会报错。 - 修正:
python
score = int(input("请输入成绩:")) # 添加 int() 转换 if score >= 60: print("及格") else: print("不及格")第 2 题(⭐)
- 错误:
while语句缺少末尾的冒号:。 - 修正:
python
i = 1 while i <= 10: # 添加冒号 print(i) i += 1第 3 题(⭐⭐)
- 错误:字符串与整数不能直接用
+拼接,需要将年龄转为字符串。 - 修正:
python
name = "张三" age = 18 info = "姓名:" + name + ",年龄:" + str(age) + "岁" # 使用 str() 转换 # 或使用 f-string info = f"姓名:{name},年龄:{age}岁" print(info)第 4 题(⭐⭐)
- 错误:
range(5)产生 0~4,对应numbers[4]是最后一个元素。无索引越界错误,但更常见写法是range(len(numbers))。此处代码逻辑正确,只是在循环中continue跳过了i=3,此时执行print(numbers[3])被跳过,所以输出 1, 2, 3, 5,然后执行else输出“循环正常结束”。代码本身能正确运行。 - 为更严谨,建议改为:
python
numbers = [1, 2, 3, 4, 5] for num in numbers: # 直接遍历列表更简洁 if num == 3: continue print(num) else: print("循环正常结束")第 5 题(⭐⭐)
- 错误:字符串是不可变类型,
strip()返回新字符串,原字符串不变。 - 修正:
python
text = " Hello World " text = text.strip() # 将返回值赋回给变量 print(text) # 输出:Hello World四、代码补全题答案
第 1 题(⭐)
python
total = 0 i = 1 while i <= 100: # 补全循环条件 total += i i += 1 # 补全循环变量的更新 print(f"1到100的和为:{total}")第 2 题(⭐⭐)
python
num = 8 is_even = num % 2 == 0 # 补全表达式,判断是否为偶数 print(f"{num} 是偶数:{is_even}")第 3 题(⭐⭐)
python
numbers = range(1, 21) squares_of_even = [x**2 for x in numbers if x % 2 == 0] # 补全列表推导式 print(squares_of_even)第 4 题(⭐⭐)
python
fruits = ["苹果", "香蕉", "橙子"] result = " | ".join(fruits) # 使用 join 方法拼接 print(result) # 输出:苹果 | 香蕉 | 橙子五、简答题答案
第 1 题(⭐)
/是真除法,无论操作数是什么类型,结果都返回浮点数。
//是整除(地板除),返回不大于商的最大整数(向下取整),结果的类型取决于操作数类型。
python
print(10 / 3) # 3.3333333333333335(浮点数) print(10 // 3) # 3(整数) print(10.0 // 3) # 3.0(浮点数)第 2 题(⭐⭐)
| 对比维度 | break | continue |
|---|---|---|
| 作用 | 终止整个循环,跳出循环体 | 跳过本次循环的剩余代码,进入下一次循环 |
| 循环是否继续 | 不再继续 | 继续下一次循环 |
| 适用场景 | 提前找到目标后退出(如查找元素) | 某些条件不满足时跳过处理(如过滤数据) |
python
# break 示例:找到 5 后停止 for i in range(10): if i == 5: break print(i) # 输出 0, 1, 2, 3, 4 # continue 示例:跳过偶数 for i in range(5): if i % 2 == 0: continue print(i) # 输出 1, 3第 3 题(⭐⭐)
| 数据类型 | 是否可变 | 是否有序 | 元素是否唯一 | 创建示例 |
|---|---|---|---|---|
| list(列表) | ✅ 可变 | ✅ 有序 | ❌ 允许重复 | [1, 2, "a"] |
| tuple(元组) | ❌ 不可变 | ✅ 有序 | ❌ 允许重复 | (1, 2, "a") |
| set(集合) | ✅ 可变 | ❌ 无序 | ✅必须唯一 | {1, 2, 3} |
| dict(字典) | ✅ 可变 | ❌ 无序(Python 3.7+ 按插入顺序) | 键必须唯一 | {"name": "Tom"} |
白话理解:
- 列表:购物车,可随意增减,有顺序。
- 元组:密封档案盒,放入后不可更改。
- 集合:自动去重的收纳盒,无序存放。
- 字典:新华字典,通过“键”快速查找对应的“值”。
第 4 题(⭐⭐⭐)
| 对比维度 | %格式化 | format() | f-string |
|---|---|---|---|
| 引入版本 | Python 1.x | Python 3.0 | Python 3.6 |
| 语法简洁度 | 一般(需记忆格式符) | 较好 | ⭐ 最简洁 |
| 可读性 | 一般 | 较好 | ⭐ 最好 |
| 表达式支持 | 不支持 | 支持 | ⭐ 完全支持 |
| 性能 | 较慢 | 中等 | ⭐ 最快 |
| 适用场景 | 维护老旧代码 | 动态构建格式化模板 | 日常开发首选 |
选择建议:
- 日常开发:首选
f-string,语法简洁、性能最好、可读性最强。 - 需要动态构建格式化模板(如模板内容来自配置文件或数据库):使用
format(),因为模板可以动态生成。 - 维护 Python 3.5 或更早版本的旧代码:使用
%格式化保持一致性。
六、实战输出题答案
第 1 题(⭐)
text
7 3 10 2.5 2 25解析:
5 + 2 = 75 - 2 = 35 * 2 = 105 / 2 = 2.5(注意:除法结果为浮点数)5 // 2 = 2(整除,向下取整)5 ** 2 = 25(幂运算)
第 2 题(⭐⭐)
text
Pythn解析:
- 遍历字符串
"Python",依次取字符'P','y','t','h','o','n' - 当字符为
'o'时执行continue,跳过本次循环的剩余代码 - 其他字符拼接到
result中 - 最终输出
Pythn(缺少'o')
第 3 题(⭐⭐⭐)
text
False True False解析:
(a > b)为False(10 > 20 不成立),and短路,整个表达式返回False(a < b)为True(10 < 20 成立),or短路,整个表达式返回True(a == 10)为True,not True为False
第 4 题(⭐⭐⭐)
text
1 12 123解析:
- 外层
i从 1 到 3 - 内层
j从 1 到i,输出j的值 - 每行结束后换行
- 第1行:
j从1到1,输出1 - 第2行:
j从1到2,输出12 - 第3行:
j从1到3,输出123
📊 自测评分参考
| 得分范围 | 评级 | 建议 |
|---|---|---|
| 100~120 分 | ⭐⭐⭐ 优秀 | 基础扎实,可以自信地进入下一期学习 |
| 80~99 分 | ⭐⭐ 良好 | 局部知识点有遗漏,建议回顾错题对应的章节 |
| 60~79 分 | ⭐ 合格 | 部分核心概念还不够牢固,建议重读笔记中对应的章节并动手练习 |
| 60 分以下 | 🔴 待加强 | 建议重新学习第一、二期笔记,配合代码实战逐个知识点攻克 |
🔜 下一步建议
完成自测后,您可以根据评分结果决定学习节奏:
- 优秀/良好:可以直接进入第五期(组合数据类型)的学习。
- 合格/待加强:建议先回顾本自测中的错题所对应的笔记章节,动手将相关代码重新运行一遍,确保每一个概念都真正理解后再继续。
祝学习顺利!🚀
