Python 基础语法(上篇 + 下篇)——综合自测题

Python 基础语法(上篇 + 下篇)——综合自测题

📋 自测说明

  • 适用章节:第一期(环境搭建与数据基石)+ 第二期(运算符全解与实战演练)
  • 题型设置:填空题(10题)、判断题(10题)、代码改错题(5题)、代码补全题(4题)、简答题(4题)、实战输出题(4题)
  • 难度梯度:⭐(基础)→ ⭐⭐(中等)→ ⭐⭐⭐(综合)
  • 建议时长:60~90 分钟
  • 答案位置:本自测题末尾附完整答案与解析

一、填空题(每空 2 分,共 20 分)

请将正确答案填写在横线上。

  1. Python 安装成功后,在命令行中输入________可以查看已安装的 Python 版本号。(⭐)
  2. 在 pip 的配置文件中,index-url参数用于指定 ________。(⭐)
  3. Python 中使用 ________ 个空格作为标准缩进单位。(⭐)
  4. 以下变量的命名中,符合 Python 命名规范的是:________(填序号)。(⭐)
    • A.2nd_place
    • B.student_name
    • C.class(保留字)
    • D.StudentName(类名规范,非变量)
  5. 在 Python 中,True等价于整数 ____,False等价于整数 ____。(⭐)
  6. int(3.99)的返回值是 ____。(⭐)
  7. 表达式10 // 3的返回值是 ____,10 % 3的返回值是 ____。(⭐)
  8. Python 中逻辑运算符andor遵循 ________ 求值原则。(⭐)
  9. 字符串'hello'.upper()的返回值是 ________。(⭐)
  10. 表达式~9的返回值是 ____。(⭐⭐)

二、判断题(每题 2 分,共 20 分)

判断下列说法是否正确,正确的打,错误的打

  1. ( )Python 中的变量必须先声明类型才能使用。
  2. ( )listtuple的主要区别之一是 list 可变而 tuple 不可变。
  3. ( )在 Python 中,///的运算结果类型完全相同。
  4. ( )字典中的键(key)可以是列表类型。
  5. ( )f-string格式化字符串时,{}中可以写任意合法的 Python 表达式。
  6. ( )continue语句会终止整个循环的执行。
  7. ( )in运算符可以判断一个元素是否在字符串、列表、元组和字典的值中。
  8. ( )strip()方法默认只能删除字符串两端的空格,不能删除其他字符。
  9. ( )range(1, 10, 2)生成的序列包含数字 9。
  10. ( )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 中breakcontinue语句的区别,并说明它们分别在什么场景下使用。

第 3 题(⭐⭐):请简述listtuplesetdict四种数据类型的核心区别(从是否可变、是否有序、元素是否唯一三个维度对比)。

第 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()

📝 答案与解析

一、填空题答案

题号答案解析
1python --version验证 Python 是否安装成功并查看版本
2镜像源(或 PyPI 镜像服务器地址)index-url指定包下载的源地址
34PEP 8 推荐使用 4 个空格作为缩进
4B.student_name小写 + 下划线是 Python 变量命名的推荐风格
51,0boolint的子类
63浮点数转整数直接截断小数部分
73,110 // 3 = 310 % 3 = 1
8短路当结果确定时不再计算剩余表达式
9'HELLO'将所有字母转为大写
10-10按位取反公式~x = -x - 1

二、判断题答案

题号答案解析
1Python 是动态类型语言,变量无需预先声明类型
2list 可变(增删改),tuple 不可变
3/返回浮点数,//返回整数(整除)
4字典的键必须是不可变类型,列表是可变类型
5{}中可以写变量、运算、函数调用等表达式
6continue只跳过本次循环,不终止整个循环
7字典中的in判断的是,不是值
8strip()可传入参数删除指定字符
9range(1, 10, 2)生成 1, 3, 5, 7, 9
103.14float类型,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 题(⭐⭐)

对比维度breakcontinue
作用终止整个循环,跳出循环体跳过本次循环的剩余代码,进入下一次循环
循环是否继续不再继续继续下一次循环
适用场景提前找到目标后退出(如查找元素)某些条件不满足时跳过处理(如过滤数据)

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.xPython 3.0Python 3.6
语法简洁度一般(需记忆格式符)较好⭐ 最简洁
可读性一般较好⭐ 最好
表达式支持不支持支持⭐ 完全支持
性能较慢中等⭐ 最快
适用场景维护老旧代码动态构建格式化模板日常开发首选

选择建议

  1. 日常开发:首选f-string,语法简洁、性能最好、可读性最强。
  2. 需要动态构建格式化模板(如模板内容来自配置文件或数据库):使用format(),因为模板可以动态生成。
  3. 维护 Python 3.5 或更早版本的旧代码:使用%格式化保持一致性。

六、实战输出题答案

第 1 题(⭐)

text

7 3 10 2.5 2 25

解析

  • 5 + 2 = 7
  • 5 - 2 = 3
  • 5 * 2 = 10
  • 5 / 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)Truenot TrueFalse

第 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 分以下🔴 待加强建议重新学习第一、二期笔记,配合代码实战逐个知识点攻克

🔜 下一步建议

完成自测后,您可以根据评分结果决定学习节奏:

  • 优秀/良好:可以直接进入第五期(组合数据类型)的学习。
  • 合格/待加强:建议先回顾本自测中的错题所对应的笔记章节,动手将相关代码重新运行一遍,确保每一个概念都真正理解后再继续。

祝学习顺利!🚀