Python 基础学习笔记:分支、循环、容器实战(附猜拳游戏案例)
本文整理 Python 条件判断、循环控制、模块导入与数据容器核心知识点,配套可运行代码,适合入门复习。
一、if 条件结构:根据条件选择执行代码
核心思想:判断条件真假,选择执行不同代码块,Python 使用**缩进(推荐4空格)**区分代码块。
1. 单分支 if
条件为 True,执行内部代码;条件为 False,直接跳过。
python
if 条件:
语句块
age = 20
if age >= 18:
print("成年")
2. 双分支 if...else
二选一,满足条件执行 if,不满足执行 else。
python
if 条件:
语句块1
else:
语句块2
age = 16
if age >= 18:
print("成年")
else:
print("未成年")
3. 多分支 if...elif...else
从上往下依次判断,只要匹配一个条件,后续不再判断。else 可选,所有条件不满足才执行。
⚠️ 条件顺序非常重要!范围大的条件不能写在前面,否则后面分支永远不会触发。
python
if 条件1:
语句块1
elif 条件2:
语句块2
elif 条件3:
语句块3
else:
全部不满足时执行
score = 85
if score >= 90:
print("A")
elif score >= 80:
print("B")
elif score >= 60:
print("C")
else:
print("D")
4. 嵌套 if
if 内部继续写 if,适合多层级条件判断。
python
age = 22
has_id = True
if age >= 18:
if has_id:
print("可以进入")
else:
print("成年但无证件,不能进入")
else:
print("未成年")
5. 三元表达式(单行简单二选一)
适合简短判断,精简代码。
python
变量 = 表达式1 if 条件 else 表达式2
age = 17
res = "成年" if age >=18 else "未成年"
print(res)
二、模块导入:复用别人写好的代码
方式1:import 模块名(推荐常用)
导入整个模块,调用功能需要写 模块名.函数()
python
import random
num = random.randint(1,3)
print(num)
方式2:from 模块名 import 功能名
只导入模块里指定函数,调用时不需要加模块前缀
python
from random import randint
num = randint(1,3)
print(num)
三、for 循环:遍历循环
适用场景:知道循环次数,或者遍历字符串、列表等可迭代容器 语法:
python
for 变量 in 可迭代对象:
循环体
range() 函数(for循环高频)
range(start, end, step),包头不包尾,包含start,不包含end
range(n):0 ~ n-1range(1,6):1,2,3,4,5range(1,10,2):1,3,5,7,9
示例:
python
# 打印1~5
for i in range(1,6):
print(i)
# 遍历字符串
s = "python"
for c in s:
print(c)
循环控制关键字 break / continue
仅作用于当前这一层循环,一般配合 if 使用。
- break:直接终止整个循环,跳出循环,循环彻底结束
python
for i in range(1, 6):
if i == 3:
break # i等于3,直接结束循环
print(i)
# 输出:1 2
- continue:跳过本次循环剩下代码,直接进入下一轮,循环本身不会停止
python
for i in range(1,6):
if i == 3:
continue # i=3时,跳过print,直接下一轮
print(i)
# 输出:1 2 4 5
四、综合案例:猜拳游戏(三局两胜)
规则:
- 1石头,2剪刀,3布
- 胜负:石头赢剪刀,剪刀赢布,布赢石头
- 三局两胜,先拿到2分的一方获胜,游戏结束
python
"""
猜拳游戏:三局两胜
1 石头,2 剪刀,3 布
石头赢剪刀,剪刀赢布,布赢石头
"""
import random
player_num = 0
computer_num = 0
while True:
player = int(input("请输入你的猜拳(1:石头,2:剪刀,3:布):"))
computer = random.randint(1, 3)
print(f"玩家出拳:{player}")
print(f"机器出拳:{computer}")
# 判断胜负
if player == computer:
print("平局")
elif ((player == 1 and computer == 2) or
(player == 2 and computer == 3) or
(player == 3 and computer == 1)):
print("玩家胜利!")
player_num += 1
else:
print("机器胜利!")
computer_num += 1
# 判断是否达到胜利条件
if player_num >= 2 or computer_num >= 2:
print("游戏结束")
if player_num >= 2:
print("恭喜你赢了")
if computer_num >= 2:
print("很遗憾,你输了")
break
五、Python 四大数据容器:列表 list
Python 常用容器:列表 list、元组 tuple、集合 set、字典 dict。本篇重点学习列表。
列表 list
- 标识符号:
[] - 特点:可变,支持增删改查,允许重复元素,有序,通过索引访问(索引从0开始)
python
# 定义列表
lst = [10, 20, 30, "python"]
# 索引取值
print(lst[0]) # 10
# 修改元素
lst[1] = 99
# 添加元素
lst.append(100)
# 删除元素
del lst[0]
列表常用操作示例
python
my_list = [1, 2, 3, 4, 5]
my_list2 = ["a", "b", "c"]
print(my_list)
print(my_list2)
# append:尾部追加单个元素
my_list.append(6)
print(my_list)
my_list.append(10)
print(my_list2)
# insert:指定下标插入元素
my_list.insert(2, 100)
print(my_list)
# extend:追加一组可迭代数据
my_list.extend([7, 8, 9])
print(my_list)
# 修改指定下标元素
my_list[0] = 100
print(my_list)
# 索引取值
print(my_list[0])
# count:统计元素出现次数
print(my_list.count(100))
# index:查找元素第一次出现下标,找不到会报错
print(my_list.index(100))
# len:获取列表长度
print(len(my_list))
# del:按下标删除
del my_list[0]
print(my_list)
# pop:按下标删除,返回被删除元素
my_list.pop(2)
print(my_list)
# remove:删除第一个匹配的元素值
my_list.remove(100)
print(my_list)
print("----------")
my_list = [1, 2, 3, 4, 5, True, False]
if True in my_list:
print(f"True在列表中的索引位置: {my_list.index(True)}")
print("True在列表中")
else:
print("True不在列表中")
列表重点思考题
-
为什么列表的查询、修改、删除大多基于下标,而不是元素值? 列表是有序容器,元素的值允许重复。如果只靠元素值操作,无法区分多个相同的值,所以优先通过位置(下标)操作。
-
列表里同时存在数字1和True,调用index(True)返回哪个下标? 在 Python 底层,
True等价于数值1,False等价于数值0。index(True)会匹配到列表中第一个等于1的元素。 例如[1,2,True],index(True)返回 0。
小结
- if 分支靠缩进区分代码块,多分支注意条件顺序;
- for 循环配合 range 处理固定次数循环,break终止循环,continue跳过本次;
- import 导入模块,random 模块可以生成随机数;
- 列表是有序可变容器,支持增删改查,操作大多基于索引;
- 实战:猜拳游戏综合运用 while循环、if判断、random随机数,实现三局两胜逻辑。