Python 基础语法(二):流程控制——让代码学会“思考“和“重复“
前言
在上一篇文章中,我们认识了 Python 的基础输入输出和变量。但光有这些还远远不够——程序真正的灵魂在于流程控制:它能根据不同的条件做出不同的选择(分支),也能重复执行某些操作(循环)。今天我们就来深入聊聊 Python 中的三大流程控制结构:顺序语句、条件语句和循环语句。
一、顺序语句 —— 最朴素的执行方式
顺序语句是程序最自然的执行方式:代码从上到下,一行一行依次执行。
print("1")
print("2")
print("3")
输出结果永远是 `123`,绝不可能是 `321` 或 `132`。
这看起来很简单,但它揭示了一个重要原则:编程是一件明确无歧义的事情。安排好任务的顺序,计算机才能正确地执行。
就像人生的顺序——上学、工作、结婚、生子。一旦顺序乱了,就会很麻烦 😄
二、条件语句 —— 让程序拥有"判断力"
1. 什么是条件语句?
条件语句表达的是 **"如果……否则……"这样的语义,它构成了计算机中最基础的逻辑判定。
举个🌰:
如果 我认真敲代码:
→ 我就很容易找到工作
否则:
→ 我就容易毕业就失业
其中"我认真敲代码"称为条件。条件成立(为真)走一条路,条件不成立(为假)走另一条路。
PS:亲爱的同学们,你是选择认真敲代码,还是躺平摆烂呢?🤔
2. Python 中的三种条件语句形式
(1)`if` 语句——单分支
python
if expression:
do_something1
do_something2
当 `expression` 为 `True` 时,执行缩进的代码块;为 `False` 则跳过。
(2)`if-else` 语句——双分支
python
if expression:
do_something1
else:
do_something2
(3)`if-elif-else` 语句——多分支
python
if expression1:
do_something1
elif expression2:
do_something2
else:
do_something3
Python 条件语句的三个独特之处(和其他语言的对比):
| 特性 | Python | C/Java |
|------|--------|--------|
| 条件括号 | 不需要 `()` | 需要 `()` |
| 语句块标识 | 缩进(4个空格或1个Tab) | `{}` |
| else if写法 | `elif`(合体词) | `else if` |
示例:选择你的态度
python
choice = input("输入 1 表示认真学习, 输入 2 表示躺平摆烂: ")
if choice == "1":
print("你会找到好工作!")
elif choice == "2":
print("你可能毕业就失业了!")
else:
print("你的输入有误!")
三、缩进和代码块 —— Python 的灵魂
代码块指的是一组放在一起执行的代码。
在 Python 中,缩进就是代码块的标识。
缩进决定了代码的"归属"
python
代码1:print("world") 在 if 内部
a = input("请输入一个整数: ")
if a == "1":
print("hello")
print("world") # 条件成立才执行
代码2:print("world") 在 if 外部
a = input("请输入一个整数: ")
if a == "1":
print("hello")
print("world") # 无论条件如何都会执行
代码块还可以嵌套
python
a = input("请输入第一个整数: ")
b = input("请输入第二个整数: ")
if a == "1":
if b == "2":
print("hello") # 两级缩进:a=="1" 且 b=="2"
print("world") # 一级缩进:a=="1"
print("python") # 无缩进:始终执行
```
缩进的好处与坏处
✅ 好处:强制程序员写出清晰的缩进,提升代码可读性。C++/Java 不缩进也不会报错,但 Python 中缩进错误直接报错。
❌ 坏处:嵌套层次太多时,容易分不清语句属于哪个层级。
python
if a == 1:
if b == 2:
if c == 3:
if d == 4:
if e == 5:
if f == 6:
if g == 7:
print("hello")
print("1")
print("2")
所以就有了 写 Python 需要自备游标卡尺 这个梗!
四、空语句 `pass` —— 占个位置
在 Python 中,有些地方语法上要求必须有语句,但逻辑上你什么都不想做,这时候就用 `pass`。
python
a = int(input("请输入一个整数:"))
if a != 1:
pass # 啥也不做,就是占个位
else:
print("hello")
如果不写 `pass`,代码会直接报错——因为 `if` 后面不能没有语句体。
五、循环语句 —— 让代码学会"重复"
有些操作需要反复执行,这时候就要用到循环。
1. `while` 循环
基本语法
python
while 条件:
循环体
条件为真,执行循环体;条件为假,结束循环。
示例①:打印 1-10
python
num = 1
while num <= 10:
print(num)
num += 1
示例②:计算 1-100 的和
python
sum = 0
num = 1
while num <= 100:
sum += num
num += 1
print(sum) # 5050
示例③:计算 5 的阶乘
python
result = 1
n = 1
while n <= 5:
result *= n
n += 1
print(result) # 120
示例④:求 1! + 2! + 3! + 4! + 5!(两重循环)
python
num = 1
sum = 0
while num <= 5:
factorResult = 1
i = 1
while i <= num:
factorResult *= i
i += 1
sum += factorResult
num += 1
print(sum) # 153
循环里还可以套循环,这就是嵌套循环。
2. `for` 循环
Python 的 `for` 循环和其他语言不太一样——它没有初始化语句、条件判定语句、变量更新语句,而是直接遍历可迭代对象。
基本语法
python
for 循环变量 in 可迭代对象:
循环体
可迭代对象:内部包含多个元素,能一个一个把元素取出来的特殊变量。
`range()` 函数——生成等差数列
`range(start, stop, step)` 生成 `[start, stop)` 范围内的整数序列。
| 写法 | 生成范围 | 示例 |
|------|---------|------|
| `range(1, 11)` | 1 到 10 | `[1,2,3,4,5,6,7,8,9,10]` |
| `range(2, 12, 2)` | 2,4,6,8,10 | 步长为2 |
| `range(10, 0, -1)` | 10 到 1 | 步长为负数 |
示例①:打印 1-10
python
for i in range(1, 11):
print(i)
示例②:打印 2, 4, 6, 8, 10
python
for i in range(2, 12, 2):
print(i)
示例③:打印 10 到 1
python
for i in range(10, 0, -1):
print(i)
示例④:求 1-100 的和
python
sum = 0
for i in range(1, 101):
sum += i
print(sum) # 5050
六、`break` 和 `continue` —— 循环的"刹车"与"跳过"
1.`continue`:跳过本次循环
python
模拟吃包子,第3个包子吃出了虫子 → 跳过它
for i in range(1, 6):
if i == 3:
continue
print(f"吃完第 {i} 个包子")
输出:
吃完第 1 个包子
吃完第 2 个包子
吃完第 4 个包子
吃完第 5 个包子
🐛 第3个包子有问题,skip 掉,继续吃第4个。
2.`break`:结束整个循环
python
# 模拟吃包子,第3个包子吃出了半只虫 → 不吃了
for i in range(1, 6):
if i == 3:
break
print(f"吃完第 {i} 个包子")
输出:
吃完第 1 个包子
吃完第 2 个包子
🪳 半只虫太恶心了,直接不吃了!
综合示例:输入数字求平均值
python
sum = 0
count = 0
while True:
num = input("请输入数字:")
if num == ';':
break # 输入分号结束
num = float(num)
sum += num
count += 1
print(sum / count)
七、综合案例:人生重开模拟器 🌟
学完了分支和循环,我们来做一个有趣的综合项目——人生重开模拟器(文字类小游戏)。
"花有重开日,人无再少年"——在游戏里,你可以重新设定属性,开启一段不一样的人生!
完整代码
python
import random
import time
import sys
print("+---------------------------------------------------------------------+")
print("| |")
print("| 花有重开日, 人无再少年 |")
print("| |")
print("| 欢迎来到, 人生重开模拟器 |")
print("| |")
print("+---------------------------------------------------------------------+")
# 设置初始属性
while True:
print("请设定初始属性(可用总点数 20)")
face = int(input("设定 颜值(1-10):"))
strong = int(input("设定 体质(1-10):"))
iq = int(input("设定 智力(1-10):"))
home = int(input("设定 家境(1-10):"))
if face < 1 or face > 10:
print("颜值设置有误!")
continue
if strong < 1 or strong > 10:
print("体质设置有误!")
continue
if iq < 1 or iq > 10:
print("智力设置有误!")
continue
if home < 1 or home > 10:
print("家境设置有误!")
continue
if face + strong + iq + home > 20:
print("总点数超过了 20!")
continue
print("初始属性设定完成!")
break
# 设置性别
point = random.randint(1, 6) # 掷色子
if point % 2 == 1:
gender = 'boy'
print("你是个男孩")
else:
gender = 'girl'
print("你是个女孩")
# 设置出生点
point = random.randint(1, 3) # 掷色子
if home == 10:
print('你出生在帝都, 你的父母是高官政要')
home += 1
iq += 1
face += 1
elif 7 <= home <= 9:
if point == 1:
print('你出生在大城市, 你的父母是公务员')
face += 2
elif point == 2:
print('你出生在大城市, 你的父母是大企业高管')
home += 2
else:
print('你出生在大城市, 你的父母是大学教授')
iq += 2
elif 4 <= home <= 6:
if point == 1:
print('你出生在三线城市, 你的父母是教师')
iq += 1
elif point == 2:
print('你出生在镇上, 你的父母是医生')
strong += 1
else:
print("你出生在镇上, 你的父母是个体户")
home += 1
else:
if 1 <= point <= 2:
print('你出生在村里, 你的父母是辛苦劳作的农民')
strong += 1
face -= 2
elif 3 <= point <= 4:
print('你出生在穷乡僻壤, 你的父母是无业游民')
home -= 1
else:
print('你出生在镇上, 你父母感情不和')
strong -= 1
# 模拟人生——幼年阶段
for age in range(1, 11):
info = f'你今年 {age} 岁, '
point = random.randint(1, 3)
# 性别触发事件
if gender == 'girl' and home <= 3 and point == 1:
info += '你家里人重男轻女思想非常严重, 你被遗弃了!'
print(info)
print("游戏结束!")
sys.exit(0)
# 体质触发的事件
elif strong < 6 and point != 3:
info += '你生了一场病, '
if home >= 5:
info += '在父母的精心照料下恢复了健康'
strong += 1
home -= 1
else:
info += '你的父母没精力管你, 你的身体状况更糟糕了'
strong -= 1
# 颜值触发的事件
elif face < 4 and age >= 7:
info += '你因为长的太丑, 别的小朋友不喜欢你, '
if iq > 5:
info += '你决定用学习填充自己'
iq += 1
else:
if gender == 'boy':
info += '你和别的小朋友经常打架'
iq -= 1
strong += 1
else:
info += '你经常被别的小朋友欺负'
strong -= 1
# 智商触发的事件
elif iq < 5:
info += '你看起来傻傻的, '
if home >= 8 and age >= 6:
info += '你的父母给你送到更好的学校学习'
elif 4 <= home <= 7:
if gender == 'boy':
info += '你的父母鼓励你多运动, 加强身体素质'
strong += 1
else:
info += '你的父母鼓励你多打扮自己'
face += 1
else:
info += '你的父母为此经常吵架'
if point == 1:
strong -= 1
elif point == 2:
iq -= 1
# 健康成长
else:
info += '你健康成长, '
if point == 1:
info += '看起来更聪明了'
iq += 1
elif point == 2:
info += '看起来更好看了'
face += 1
else:
info += '看起来更结实了'
strong += 1
print('-------------------------------------------')
print(info)
print(f'strong={strong}, face={face}, iq={iq}, home={home}')
time.sleep(1)
总结:
核心要点 :
顺序语句:代码从上到下依次执行
条件语句: `if` / `if-else` / `if-elif-else`
缩进规则: 4个空格表示代码块,Python 的灵魂
pass语句: 占位符,保持语法正确
while循环: 条件为真时重复执行
for循环: 遍历可迭代对象,配合 `range()` 使用
break: 跳出整个循环
continue: 跳过本次循环,进入下一次
💡 下期预告**:基础语法(3)——我们将继续深入学习 Python 的函数、列表、字典等更高级的数据结构,敬请期待!
更多推荐
所有评论(0)