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 分以下 | 🔴 待加强 | 建议重新学习第一、二期笔记,配合代码实战逐个知识点攻克 |
🔜 下一步建议
完成自测后,您可以根据评分结果决定学习节奏:
- 优秀/良好 :可以直接进入 第五期(组合数据类型) 的学习。
- 合格/待加强:建议先回顾本自测中的错题所对应的笔记章节,动手将相关代码重新运行一遍,确保每一个概念都真正理解后再继续。
祝学习顺利!🚀