Python 学习笔记(第一期与第二期)——基础语法——核心知识点自测与详解
Python 学习笔记第一期与第二期——基础语法——核心知识点自测与详解本自测解析针对 Python 学习笔记系列第一期基础语法·上篇环境搭建与数据基石和第二期基础语法·下篇运算符全解与实战演练的核心内容。共 10 题每题包含题目回顾、考查知识点、详细解答与分析帮助读者巩固 Python 基础语法与运算符的核心技能。文章索引[Python 学习笔记第一期——基础语法上篇环境搭建与数据基石Python 学习笔记第二期——基础语法下篇运算符全解与实战演练更多自我检测系列欢迎浏览每日知识点小问答我的主页AOwhisky这里有更多运维系统性知识整理和其他有趣内容欢迎与我一起探讨学习~第一期与第二期基础语法第 1-5 题题目一Python 环境安装与 pip 镜像源配置题目Python 安装完成后如何在命令行验证安装是否成功如果在执行pip install时出现下载超时错误原因是什么请写出永久配置国内镜像源以清华源为例的具体步骤。考查知识点Python 多平台安装与验证 —— 第一期 §1pip 镜像源配置 —— 第一期 §2.2详细解答验证安装是否成功在命令提示符CMD或终端中执行以下命令python--versionpip--version如果配置正确会分别输出 Python 版本号和 pip 版本号。例如Python 3.12.0 pip 23.2.1 from C:\Python312\Lib\site-packages\pip (python 3.12)pip 安装超时的原因默认连接的是国外官方源pypi.org国内网络访问速度慢容易超时根本解决方法是永久配置国内镜像源永久配置清华源Windows步骤操作1. 定位配置文件目录打开文件资源管理器在地址栏输入%APPDATA%并回车进入当前用户的 AppData/Roaming 目录2. 创建 pip 文件夹在该目录下新建一个名为pip的文件夹3. 创建 pip.ini 文件进入pip文件夹新建一个名为pip.ini的文本文档注意扩展名必须是.ini4. 填入配置内容用记事本打开pip.ini复制以下内容并保存[global] timeout 40 index-url https://pypi.tuna.tsinghua.edu.cn/simple extra-index-url https://mirrors.aliyun.com/pypi/simple/ https://pypi.douban.com/simple/ [install] trusted-host pypi.tuna.tsinghua.edu.cn mirrors.aliyun.com pypi.douban.commacOS / Linux 用户在家目录~下创建隐藏文件夹.pip然后在其中创建pip.conf文件填入相同内容。配置完成后再次执行pip install 包名即可体验到飞升的下载速度。题目二Python 代码格式规范——缩进与注释题目Python 中推荐的缩进方式是什么为什么不能混用 Tab 和空格单行注释和多行注释文档字符串分别如何编写请指出以下代码中的格式错误并修正。ifTrue:print(缩进错误)else:print(正确缩进)考查知识点代码缩进规则 —— 第一期 §3.2注释规范 —— 第一期 §3.1详细解答缩进规范Python 官方推荐使用4 个空格作为一级缩进主流 IDE 均支持按 Tab 键自动转换为 4 个空格严禁混用 Tab 和空格否则会报错IndentationError: unindent does not match any outer indentation level注释规范注释类型语法说明单行注释# 注释内容#和内容之间建议空一格行尾注释与代码间至少空两格多行注释文档字符串注释内容使用三对双引号或单引号包裹通常放在函数/类开头错误代码修正# ❌ 错误if 语句下面的代码块没有缩进ifTrue:print(缩进错误)# ✅ 修正ifTrue:print(缩进正确)# 4 个空格缩进else:print(也正确)# 4 个空格缩进题目三变量本质与动态类型题目请解释 Python 中“变量是贴在值上的便利贴”这一比喻的含义。Python 是静态类型还是动态类型语言以下代码执行后num的类型分别是什么num100print(type(num))numHelloprint(type(num))num3.14print(type(num))考查知识点变量本质与内存模型 —— 第一期 §5动态类型特性 —— 第一期 §5详细解答“便利贴”比喻的含义变量本身不存储数据而是指向内存中存储数据的位置可以将变量理解为贴在数据上的“标签”或“便利贴”当执行num 100时系统在内存中创建整数 100然后将标签num贴在该内存空间上执行num Hello时将标签num从整数 100 上揭下来贴到字符串Hello上原来的 100 如果没有其他标签引用会被垃圾回收机制清理动态类型Python 是动态类型语言。变量本身没有类型变量所指向的数据才有类型。同一变量可以在不同时刻指向不同类型的值。代码类型追踪num100print(type(num))# class intnumHelloprint(type(num))# class strnum3.14print(type(num))# class float题目四六大组合数据类型对比题目请从“是否可变”、“是否有序”、“元素是否唯一”三个维度对比list、tuple、set、dict、str五种数据类型并各举一个创建示例。为什么字典的键不能使用列表类型考查知识点六大组合数据类型 —— 第一期 §6可变与不可变类型 —— 第一期 §6详细解答五种数据类型对比表类型是否可变是否有序元素是否唯一创建示例list列表✅ 可变✅ 有序❌ 允许重复[1, 2, hello]tuple元组❌ 不可变✅ 有序❌ 允许重复(1, 2, hello)str字符串❌ 不可变✅ 有序❌ 允许重复Pythonset集合✅ 可变❌ 无序✅必须唯一{1, 2, 3}dict字典✅ 可变❌ 无序Py3.7 按插入顺序键必须唯一{name: Tom}为什么字典的键不能使用列表字典的键必须是不可变类型hashable列表是可变类型可以增删改元素其哈希值会变化如果用列表作为键一旦列表内容变化字典将无法正确定位该键值对因此{[1, 2]: value}会抛出TypeError白话理解列表购物车可随意增减有顺序元组密封档案盒放入后不可更改集合自动去重的收纳盒无序摆放字典新华字典通过“键”快速查找对应的“值”题目五数字类型与进制转换题目Python 中整型支持哪四种进制表示请写出将十进制数255转换为二进制、八进制、十六进制的方法。浮点数转整数时会发生什么以下代码的输出是什么print(int(3.99))print(float(10))print(bool(0))print(bool([]))考查知识点整型的四种进制 —— 第一期 §7.1进制转换函数 —— 第一期 §7.1数字类型转换 —— 第一期 §7.5布尔类型与真值测试 —— 第一期 §7.4详细解答四种进制表示进制前缀示例对应十进制二进制Binary0b或0B0b11111111255八进制Octal0o或0O0o377255十进制Decimal无255255十六进制Hex0x或0X0xFF255进制转换num255print(bin(num))# 0b11111111print(oct(num))# 0o377print(hex(num))# 0xff浮点数转整数使用int()将浮点数转换为整数时直接截断小数部分不进行四舍五入int(3.99)→3布尔类型与真值测试bool是int的子类True等价于 1False等价于 0以下情况会被视为FalseNone、False、任何数字类型的 0、任何空序列、[]、()、任何空字典{}代码输出print(int(3.99))# 3print(float(10))# 10.0print(bool(0))# Falseprint(bool([]))# False第一期与第二期基础语法第 6-10 题题目六算术运算符与类型提升题目Python 中/和//运算符的区别是什么10 / 3和10 // 3的输出分别是什么混合运算时Python 的类型提升规则是什么以下代码的输出是什么print(10/2.0)print(10-(35j))考查知识点算术运算符 —— 第二期 §1混合运算类型提升 —— 第二期 §1详细解答/与//的区别运算符名称示例结果说明/真除法10 / 33.333...结果总是浮点数//整除地板除10 // 33向下取整返回整数部分混合运算的类型提升规则当不同类型的数字混合运算时Python 会自动向“更高精度”的类型提升整型 浮点型 → 浮点型整型 复数 → 复数浮点型 复数 → 复数代码输出print(10/2.0)# 5.0整型 10 提升为浮点型print(10-(35j))# (7 - 5j)整型 10 提升为复数题目七赋值运算符含海象运算符题目以下代码的执行结果是什么请解释海象运算符:的作用并与传统写法对比。# 代码段一xyz1a,b1,2print(x,y,z,a,b)# 代码段二num5num2num*3print(num)# 代码段三海象运算符while(data:input(请输入内容)):print(内容不能为空)考查知识点链式赋值与平行赋值 —— 第二期 §2.1复合赋值运算符 —— 第二期 §2.2海象运算符:—— 第二期 §2.3详细解答代码段一链式赋值与平行赋值x y z 1三个变量同时赋值为 1链式赋值a, b 1, 2a 赋值为 1b 赋值为 2平行赋值/元组解包输出1 1 1 1 2代码段二复合赋值num5num2# num 5 2 7num*3# num 7 * 3 21print(num)# 21代码段三海象运算符:海象运算符允许在表达式内部为变量赋值因形似海象的眼睛和长牙而得名。传统写法需先赋值再判断datainput(请输入内容)whilelen(data)0:print(内容不能为空)datainput(请输入内容)海象运算符写法在 while 条件中同时完成赋值和判断while(data:input(请输入内容)):print(内容不能为空)运行效果如果用户直接按回车输入空字符串会提示“内容不能为空”并再次询问如果输入了有效内容则退出循环。⚠️ 注意海象运算符优先级较低与比较运算符混用时必须加括号()。题目八比较运算符、逻辑运算符与短路求值题目请写出以下代码的输出并解释逻辑运算符的短路求值原则。a,b,c10,5,0print(ab)# ①print(ab)# ②print(5a15)# ③print(canda/c)# ④print(aborca)# ⑤print(not(a10))# ⑥考查知识点比较运算符与链式比较 —— 第二期 §3逻辑运算符与短路求值 —— 第二期 §4详细解答代码输出a,b,c10,5,0print(ab)# True10 5print(ab)# False10 5print(5a15)# True链式比较5 10 15print(canda/c)# 0c0 为假短路不执行 a/c避免除零错误print(aborca)# Truea b 为 Trueor 短路不再计算 c aprint(not(a10))# Falsea 10 为 True取反为 False短路求值原则运算符原则返回规则and如果左边为假不再计算右边返回第一个假值或最后一个真值or如果左边为真不再计算右边返回第一个真值或最后一个假值代码④详解c and a / c中c 0为假and直接返回0不执行a / c因此避免了ZeroDivisionError。代码⑤详解a b为Trueor直接返回True不执行c a。题目九成员运算符与位运算题目请写出以下代码的输出。位运算~9的结果为什么是-10请简述按位取反的计算过程。print(oinPython)# ①print(3in[1,2,3])# ②print(namein{name:Tom,age:18})# ③print(93)# ④print(9|3)# ⑤print(9^3)# ⑥print(~9)# ⑦print(91)# ⑧print(91)# ⑨考查知识点成员运算符in/not in—— 第二期 §5位运算符 —— 第二期 §6详细解答代码输出print(oinPython)# True字符串中查找字符print(3in[1,2,3])# True列表中查找元素print(namein{name:Tom,age:18})# True字典中判断的是键不是值位运算结果print(93)# 1 (00001001 00000011 00000001)print(9|3)# 11 (00001001 | 00000011 00001011)print(9^3)# 10 (00001001 ^ 00000011 00001010)print(~9)# -10print(91)# 18 (左移一位 9 * 2)print(91)# 4 (右移一位 9 // 2)按位取反~9 -10的计算过程确定补码9 是正数正数的原码 反码 补码所以 9 的补码为00001001对补码取反得到新的补码11110110将补码转换为原码符号位最高位为 1表示负数其余位取反00001001再 100001010 10最终结果为-10记忆口诀~x等价于-x - 1。例如~9 -10~(-9) 8。题目十运算符优先级与综合实战题目请写出以下代码的输出并说明运算符的优先级如何影响计算结果。然后回答如果表达式中包含多种运算符且不确定优先级时最佳实践是什么a,b,c2,3,4result1c**b*a result2c**(b*a)result3105*2**3-4result4(105)*(2**3)-4print(result1)print(result2)print(result3)print(result4)考查知识点运算符优先级 —— 第二期 §7实战最佳实践 —— 第二期 §7详细解答代码输出a,b,c2,3,4result1c**b*a# 4**3 * 2 64 * 2 128result2c**(b*a)# 4**(3*2) 4**6 4096result3105*2**3-4# 10 5 * 8 - 4 10 40 - 4 46result4(105)*(2**3)-4# 15 * 8 - 4 120 - 4 116print(result1)# 128print(result2)# 4096print(result3)# 46print(result4)# 116优先级分析表达式优先级顺序计算过程c ** b * a**先于*(4**3) * 2 64 * 2c ** (b * a)括号最高4 ** (3*2) 4**610 5 * 2 ** 3 - 4**→*→-10 (5*(2**3)) - 4(10 5) * (2 ** 3) - 4括号最高(15) * (8) - 4最佳实践当不确定运算符优先级时直接使用括号()明确计算顺序。括号不仅能确保计算逻辑与预期一致还能大幅提升代码可读性# ❌ 难以理解totalab*c**d//e-f# ✅ 一目了然totala(b*(c**d)//e)-f附知识点对应总表题号主要考查知识点对应笔记章节1第一期 §1 环境安装验证第一期 §2.2 pip 镜像源配置2第一期 §3.2 缩进规则第一期 §3.1 注释规范3第一期 §5 变量本质与动态类型4第一期 §6 六大组合数据类型对比5第一期 §7.1 进制与转换第一期 §7.5 类型转换第一期 §7.4 布尔与真值测试6第二期 §1 算术运算符与类型提升7第二期 §2 赋值运算符链式/复合/海象8第二期 §3 比较运算符第二期 §4 逻辑运算符与短路求值9第二期 §5 成员运算符第二期 §6 位运算符10第二期 §7 运算符优先级与最佳实践学习建议对于答错的题目请回看第一期或第二期对应章节并动手在 Python 交互式环境中执行相关命令。基础语法和运算符是 Python 编程的基石建议通过反复练习加深理解。— Compiled and Authored by Whisky — July 12th, 2026