三级的知识点比前两级更深入、更抽象,很多同学学完之后会觉得有点难。别担心!今天这篇文章就是为你量身打造的编程三级总复习宝典!我们会用最简单的比喻、最清晰的代码,把所有重点、难点一网打尽。看完这篇,你不仅能轻松应对考试,还能写出更专业、更高效的Python代码!
第一关:进制转换——计算机的"语言"
计算机只认识0和1,但我们平时用的是十进制。学会不同进制之间的转换,你就能和计算机"直接对话"了!
1.1 四种常见进制
小技巧:十六进制中,A=10, B=11, C=12, D=13, E=14, F=15
1.2 核心转换方法
方法1:其他进制 → 十进制(按权展开法)
公式:每一位数字 × 基数的位数次方,然后相加
- 二进制
101转十进制:1×2² + 0×2¹ + 1×2⁰ = 4 + 0 + 1 = 5 - 十六进制
1A转十进制:1×16¹ + 10×16⁰ = 16 + 10 = 26
方法2:十进制 → 其他进制(除基取余法)
步骤:不断除以基数,直到商为0,然后倒序取余数
- 十进制
13转二进制:13 ÷ 2 = 6 余 1
6 ÷ 2 = 3 余 0
3 ÷ 2 = 1 余 1
1 ÷ 2 = 0 余 1
倒序取余:1101
1.3 Python内置转换函数(考试必用!)
# 十进制转其他进制
print(bin(10)) # 转二进制:0b1010
print(oct(10)) # 转八进制:0o12
print(hex(10)) # 转十六进制:0xa
# 其他进制转十进制
print(int('1010', 2)) # 二进制转十进制:10
print(int('12', 8)) # 八进制转十进制:10
print(int('a', 16)) # 十六进制转十进制:10
易错点提醒:
第二关:原码、反码、补码——负数的秘密
计算机怎么表示负数呢?这就要靠原码、反码、补码了!它们是计算机存储有符号整数的三种方式。
2.1 基本概念(以8位二进制为例)
- 最高位是符号位
- 正数
- 负数
- 反码:原码的符号位不变,其余位取反(0变1,1变0)
2.2 计算示例(8位)
2.3 为什么要用补码?
补码最大的好处是可以把减法变成加法,让计算机只需要加法器就能完成所有运算。 比如:5 - 3 = 5 + (-3) = 2,用补码计算完全正确!
易错点提醒:
第三关:位运算——直接操作二进制
位运算就是直接对二进制的每一位进行操作,速度非常快,是高级程序员的必备技能!
3.1 六种位运算符
| | | | |
|---|
& | | | 0b101 & 0b011 | 0b001 |
| | | | |
~ | | | ~0b101 | -6 |
^ | | | 0b101 ^ 0b011 | 0b110 |
<< | | | 0b101 << 1 | 0b1010 |
>> | | | 0b101 >> 1 | 0b10 |
3.2 位运算的实用技巧(超级有用!)
# 1. 判断奇偶:& 1
print(5 & 1) # 1(奇数)
print(4 & 1) # 0(偶数)
# 2. 交换两个变量(不用临时变量)
a, b = 3, 5
a = a ^ b
b = a ^ b
a = a ^ b
print(a, b) # 5 3
# 3. 快速乘2:<< 1
print(3 << 1) # 6(3×2)
# 4. 快速除2:>> 1
print(6 >> 1) # 3(6÷2)
第四关:四大容器——数据的"收纳箱"
当我们需要处理大量数据时,单个变量就不够用了。Python提供了四种强大的容器来存储和管理数据。
4.1 四大容器对比表(必背!)
| | | | | |
|---|
| | | | | [1, 2, 3] |
| | | | | (1, 2, 3) |
| | | | | {"name": "小明", "age": 10} |
| | | | | {1, 2, 3} |
4.2 列表(最常用)
# 创建列表
fruits = ["苹果", "香蕉", "橙子"]
# 增
fruits.append("葡萄") # 末尾添加
fruits.insert(1, "草莓") # 指定位置插入
# 删
fruits.pop() # 删除末尾元素
fruits.remove("香蕉") # 删除指定元素
# 改
fruits[0] = "西瓜"
# 查
print(fruits[1]) # 按索引访问
print(fruits.index("橙子")) # 查找元素索引
# 常用函数
print(len(fruits)) # 长度
fruits.sort() # 排序
fruits.reverse() # 反转
4.3 字典(键值对存储)
# 创建字典
student = {"name": "小红", "age": 11, "score": 95}
# 增/改
student["gender"] = "女" # 不存在则添加,存在则修改
student["age"] = 12
# 删
student.pop("score") # 删除指定键值对
# 查
print(student["name"]) # 按键访问(键不存在会报错)
print(student.get("score", 0)) # 安全访问(不存在返回默认值)
# 遍历
for key, value in student.items():
print(key, ":", value)
4.4 集合(自动去重)
# 创建集合
nums = {1, 2, 3, 2, 1}
print(nums) # {1, 2, 3}(自动去重)
# 增删
nums.add(4)
nums.remove(1)
# 集合运算
a = {1, 2, 3}
b = {2, 3, 4}
print(a & b) # 交集:{2, 3}
print(a | b) # 并集:{1, 2, 3, 4}
print(a - b) # 差集:{1}
第五关:列表解析——一行代码顶十行
列表解析是Python的特色语法,能让你用一行代码完成原本需要多行循环的操作,非常简洁优雅!
5.1 基本语法
[表达式 for 变量 in 序列]
对比示例:生成1到10的平方列表
# 普通写法
squares = []
for i in range(1, 11):
squares.append(i ** 2)
# 列表解析写法
squares = [i ** 2 for i in range(1, 11)]
5.2 带条件的列表解析
# 生成1到10中的偶数列表
evens = [i for i in range(1, 11) if i % 2 == 0]
print(evens) # [2, 4, 6, 8, 10]
# 把列表中的所有字符串转成大写
words = ["hello", "world", "python"]
upper_words = [word.upper() for word in words]
print(upper_words) # ['HELLO', 'WORLD', 'PYTHON']
第六关:基础算法——编程的灵魂
算法就是解决问题的步骤和方法。三级要求掌握两种最基础也最常用的算法:枚举法和模拟法。
6.1 枚举法(暴力破解法)
核心思想:把所有可能的情况都试一遍,找出符合条件的解。 适用场景:问题规模不大,所有可能的情况可以一一列举。
经典示例:百钱买百鸡
公鸡5元一只,母鸡3元一只,小鸡1元3只。用100元买100只鸡,问公鸡、母鸡、小鸡各买多少只?
# 枚举所有可能的公鸡数量(0-20)
for x in range(0, 21):
# 枚举所有可能的母鸡数量(0-33)
for y in range(0, 34):
# 小鸡数量
z = 100 - x - y
# 判断是否满足总钱数条件
if 5 * x + 3 * y + z / 3 == 100:
print(f"公鸡:{x}只,母鸡:{y}只,小鸡:{z}只")
6.2 模拟法
核心思想:按照题目描述的过程,一步一步用代码模拟出来。 适用场景:问题有明确的步骤和规则,可以直接翻译成代码。
经典示例:报数游戏
10个小朋友围成一圈报数,报到3的人退出,最后剩下的人是几号?
# 初始化10个小朋友,编号1-10
kids = list(range(1, 11))
count = 0 # 报数计数器
while len(kids) > 1:
# 取出第一个小朋友
kid = kids.pop(0)
count += 1
# 如果报到3,就退出;否则排到队尾
if count != 3:
kids.append(kid)
else:
count = 0
print("最后剩下的小朋友是:", kids[0], "号")
🎯 考前必做综合练习
现在来检验一下你的学习成果吧!做完再看答案哦!
练习1:进制转换器
编写一个程序,让用户输入一个十进制数,然后输出它的二进制、八进制和十六进制表示。
练习2:成绩统计
用字典存储3个学生的姓名和成绩,然后计算全班的平均分、最高分和最低分。
练习3:素数判断
编写一个函数,判断一个数是不是素数(只能被1和它本身整除的数)。然后用列表解析生成100以内的所有素数。
练习4:模拟石头剪刀布
编写一个程序,模拟人和电脑玩石头剪刀布游戏,电脑随机出拳,人输入选择,然后判断胜负。
📝 参考答案
练习1:进制转换器
num = int(input("请输入一个十进制数:"))
print(f"二进制:{bin(num)}")
print(f"八进制:{oct(num)}")
print(f"十六进制:{hex(num)}")
练习2:成绩统计
students = {
"小明": 90,
"小红": 95,
"小刚": 85
}
scores = list(students.values())
average = sum(scores) / len(scores)
highest = max(scores)
lowest = min(scores)
print(f"平均分:{average:.1f}")
print(f"最高分:{highest}")
print(f"最低分:{lowest}")
练习3:素数判断
def is_prime(n):
if n < 2:
return False
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return False
return True
# 生成100以内的素数
primes = [i for i in range(2, 101) if is_prime(i)]
print("100以内的素数:", primes)
练习4:模拟石头剪刀布
import random
choices = ["石头", "剪刀", "布"]
computer = random.choice(choices)
player = input("请出拳(石头/剪刀/布):")
print(f"电脑出了:{computer}")
if player == computer:
print("平局!")
elif (player == "石头" and computer == "剪刀") or \
(player == "剪刀" and computer == "布") or \
(player == "布" and computer == "石头"):
print("你赢了!")
else:
print("你输了!")
🎉 写在最后
太棒了!你已经看完了这篇编程三级总复习文章。现在的你,已经掌握了Python编程的核心技能,具备了学习更高级知识的基础。
三级的知识点确实有难度,特别是补码和位运算,刚开始可能会觉得有点抽象。但只要你多练习、多思考,把每个概念都搞懂,就会发现它们其实很简单。
通过三级只是你编程之路的一个里程碑。接下来还有更精彩的知识等着你——函数、模块、面向对象、文件操作……
加油,小程序员们!你们已经具备了成为优秀程序员的潜力,继续在代码的世界里探索吧!🚀