Appearance
🔁 分支与循环结构
一、流程结构
在程序执行过程中,有三种基本结构:
- 顺序结构:一条一条语句按顺序执行。
- 分支结构:根据条件判断,决定执行哪部分代码。
- 循环结构:满足条件时,反复执行某段代码。
之前接触的程序都是顺序结构,接下来开始学习两种常见的结构:分支和循环。
💬: 为什么需要分支和循环结构?
二、bool 类型、运算符与缩进
1. 布尔值(bool 类型)
- Python 中的布尔值(
bool)只有两个:True(真)和False(假)。比如:5 > 3返回True,2 == 3返回False。 - 条件判断时,结果都是布尔值。
2. 逻辑运算符
and:与,两个条件都为 True,结果才为 True。or:或,至少一个条件为 True,结果为 True。not:非,True 变 False,False 变 True。
python
x = 5
y = 10
print(x > 0 and y > 0) # True
print(x > 0 or y < 0) # True
print(not(x > 0)) # False3. 比较运算符
| 运算符 | 含义 |
|---|---|
| > | 大于 |
| >= | 大于等于 |
| < | 小于 |
| <= | 小于等于 |
| == | 等于 |
| != | 不等于 |
4. in 成员操作符
- 判断某个元素是否存在于序列(字符串、列表、元组、集合、字典的键)中,返回布尔值
True或False。
python
s = "hello"
print('h' in s) # True
print('a' in s) # False
print ('l' not in s) # True5. 缩进与代码块
- Python 使用缩进表示代码块,通常为 4 个空格 或 1 个 Tab。
- 缩进相同的语句属于同一代码块。
- 和其他语言用大括号不同,Python 必须正确缩进。
- 缩进不一致会导致程序错误,或逻辑混乱。
python
if x > 0:
print("正数")
print("这是 if 里面的代码块")
print("这是外面的代码")三、分支结构(判断)
1. if 单分支结构
语法:
python
if 条件:
代码块示例:
python
score = 75
if score >= 60:
print("及格了!")输出:
及格了!2. if-else 双分支结构
语法:
python
if 条件:
代码块1
else:
代码块2示例:
python
num = int(input("请输入一个整数:"))
if num % 2 == 0:
print("偶数")
else:
print("奇数")3. if-elif-else 多分支结构
语法:
python
if 条件1:
代码块1
elif 条件2:
代码块2
else:
代码块3示例:
python
score = int(input("请输入成绩:"))
if score >= 90:
print("优秀")
elif score >= 60:
print("及格")
else:
print("不及格")对
if语句,有且只有一个if,else可以没有,也可以有一个,elif则可以多个,根据具体情况而定。
4. 嵌套 if 结构
嵌套 if 结构指的是在 if 程序块里面使用 if 程序。
语法:
python
if 条件1:
if 条件2:
代码块1
else:
代码块2
else:
代码块3示例:
python
age = int(input("请输入年龄:"))
if age >= 18:
gender = input("请输入性别(男/女):")
if gender == "男":
print("成年男性")
else:
print("成年女性")
else:
print("未成年人")5. 基础比较、复合比较和链式比较
基础比较
基础比较是最简单的比较程序,两个值之间直接比较
python
a > b
a == b
a != b
a >= 3
a !=100复合比较
复合比较是通过逻辑运算符连接多个比较,综合判断最后的结果:
python
a > 0 and b > 0
a > 0 or b > 0
a > 0 and b < 0 or c ==0链式比较
python
0 < a < 100 # 等价于 0 < a and a < 100
60 <= a <= 90 # 等价于 a >= 60 and a <= 90这种比较方式可能更为简洁
三、循环结构
1. while 循环
语法:
python
while 条件:
代码块示例:
python
count = 1
while count <= 5:
print("第", count, "次循环")
count += 1输出:
第 1 次循环
第 2 次循环
第 3 次循环
第 4 次循环
第 5 次循环注意:
- while 循环里的条件也必须是 bool 类型。
- 如果条件一直为 True,循环不会停止(熟称死循环)。
2. for 循环
语法:
python
for 变量 in 序列:
代码块示例:
python
for i in range(1, 6):
print(i)输出:
1
2
3
4
5
range(10)生成的是数字序列:0, 1, 2, ..., 9,共10个数字。
for i in range(10)意思是:变量i依次取这10个数字,每取一个数字,执行一次循环体(循环里面的代码)。所以,循环体会“重复执行10次”。
range() 函数说明:
range(5)→ 0, 1, 2, 3, 4range(起点, 终点)→ 从起点到终点-1range(起点, 终点, 步长)
有时候我们只需要循环的次数,并不需要用到变量
i,可以直接省略i,强调这个循环只需要次数:pythonfor _ in range(10): print("你好")这段程序将输出 10 次“你好”。
3. 嵌套 for 循环
语法:
python
for 变量1 in 序列1:
for 变量2 in 序列2:
代码块示例:九九乘法表
python
for i in range(1, 10):
for j in range(1, i + 1):
print(f"{j}*{i}={i*j}", end="\t")
print()输出:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
...4. break 和 continue
break:提前结束循环
python
while True:
num = int(input("请输入一个正数:"))
if num > 0:
print("输入正确!")
break
else:
print("请重新输入!")continue:跳过本次循环
python
for i in range(1, 6):
if i == 3:
continue
print(i)输出:
1
2
4
55. for-else 结构
for循环正常结束后,会执行else中的代码。- 如果循环被
break中断,则不会执行else。
示例:
python
for i in range(1, 5):
print(i)
else:
print("循环正常结束,没有被break中断")输出:
python
1
2
3
4
循环正常结束,没有被break中断带 break 的示例:
python
for i in range(1, 5):
if i == 3:
break
print(i)
else:
print("不会执行,因为循环被break中断了")输出:
python
1
2四、小结
- 顺序结构、分支结构、循环结构 是程序的三大基本结构。
- Python 使用缩进表示代码块,注意保持缩进一致。
- 条件判断中的比较运算符:
> >= < <= == != - 逻辑运算符:
and、or、not while和for循环根据条件反复执行,break和continue控制循环流程。while和for可以实现的功能相同,但是while用来一般用来实现不确定次数的循环,for这确定次数确定的循环- 嵌套 if、嵌套 for 是多层判断和多层循环的重要写法。
五、练习题
- 输入一个整数,判断是否大于 0,如果大于0,打印:大于0。
- 输入一个整数,判断是正数、负数或零。
- 输入两个整数,判断它们是否相等。
- 输入一个年龄,判断是否成年。
- 输入一个成绩,判断是否及格,及格输出“通过”,否则“未通过”。
- 输入一个字符,判断是否是大写字母。
- 输入三个整数,输出其中最大的一个。
- 输入用户名和密码,判断是否同时符合“admin” 和“123456”。逻辑运算符
- 输入两个数字,判断是否至少有一个大于 50。逻辑运算符
- 输入一个年份,判断是否为闰年。>
闰年规则:年份能被4整除且不能被100整除,或者能被400整除。
- 输入三角形三边,判断是否能构成三角形。
三角形的判定:任意2条边都大于第三边
- 使用 while 循环,输出 1 到 5。
- 输入一个正整数 n,计算 1 到 n 的和。
- 使用 for 循环,输出 1 到 10 的奇数。
- 使用 for 循环,输出九九乘法表。嵌套
- 输入一个正整数,判断是否为质数。
- 输入一个整数,使用 while 判断直到输入为正数才结束。
- 输入一个正整数,输出它的所有因子。
- 使用嵌套循环打印一个 5 行的星号三角形。
- 猜数字游戏:程序预先确定一个数字,用户最多输入 10 次,超过次数提示失败。