从零开始学Python(四):控制流程

从零开始学Python(四):控制流程

本系列教程将带你从零开始学习Python编程,无需任何编程基础。

条件语句

条件语句让程序能够根据不同情况执行不同的操作。

if 语句

if语句用于判断条件是否成立。

1
2
3
4
age = 18

if age >= 18:
print("你已经成年了")

if后面的条件必须以冒号:结尾,缩进的代码块是条件成立时执行的代码,Python使用缩进(4个空格)表示代码块。

if-else 语句

if-else语句提供两种选择:条件成立执行一个操作,不成立执行另一个。

1
2
3
4
5
6
age = 16

if age >= 18:
print("你已经成年了")
else:
print("你还未成年")

if-elif-else 语句

当有多个条件需要判断时,使用if-elif-else

1
2
3
4
5
6
7
8
9
10
score = 85

if score >= 90:
print("优秀")
elif score >= 80:
print("良好")
elif score >= 60:
print("及格")
else:
print("不及格")

elif是”else if”的缩写。程序会从上到下依次检查条件,一旦某个条件成立,执行对应的代码块后结束。可以有多个elif,但只能有一个if和一个else

逻辑运算符在条件语句中的应用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
age = 25
has_ticket = True

# and:两个条件都满足
if age >= 18 and has_ticket:
print("可以进入电影院")

# or:至少一个条件满足
if age < 12 or age > 65:
print("可以享受优惠票价")

# not:取反
is_weekend = False
if not is_weekend:
print("今天是工作日")

循环

循环用于重复执行某段代码。

while 循环

while循环在条件为真时持续执行。

1
2
3
4
count = 0
while count < 5:
print(f"计数:{count}")
count += 1

确保循环条件最终会变为False,否则会陷入”无限循环”。

for 循环

for循环用于遍历序列(如列表、字符串)。

1
2
3
# 遍历字符串
for char in "Python":
print(char)

range() 函数

range()函数生成一个数字序列,常与for循环配合使用。

range(5)生成0, 1, 2, 3, 4。range(1, 6)生成1, 2, 3, 4, 5。range(1, 10, 2)生成1, 3, 5, 7, 9(步长为2)。

嵌套循环

循环内部可以再包含循环。

1
2
3
4
5
# 打印九九乘法表(部分)
for i in range(1, 4):
for j in range(1, 4):
print(f"{i} × {j} = {i * j}", end="\t")
print() # 换行

break 和 continue

break:跳出循环

break用于立即退出循环。

1
2
3
4
for i in range(10):
if i == 5:
break # 当 i 等于5时退出循环
print(i)

输出为0, 1, 2, 3, 4。

continue:跳过本次迭代

continue用于跳过当前迭代,继续下一次循环。

1
2
3
4
for i in range(5):
if i == 2:
continue # 跳过 i 等于2的情况
print(i)

输出为0, 1, 3, 4。

实战示例:猜数字游戏

让我们创建一个经典的猜数字游戏。

场景说明

程序随机生成一个1-100的数字,用户有10次机会猜中它。

完整代码

创建文件guess_number.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# 猜数字游戏

import random

# 生成随机数(1-100)
secret = random.randint(1, 100)
attempts = 10 # 最多猜10次

print("=" * 40)
print(" 欢迎来到猜数字游戏!")
print("=" * 40)
print(f"我已经想好了一个1到100之间的数字")
print(f"你有{attempts}次机会猜中它!")
print("=" * 40)
print()

# 游戏循环
for i in range(attempts):
remaining = attempts - i
guess = int(input(f"第{i+1}次猜测(剩余{remaining}次):"))

if guess == secret:
print()
print("=" * 40)
print(f"恭喜你!{i+1}次就猜中了!答案就是{secret}!")
print("=" * 40)
break # 猜对了,退出循环
elif guess < secret:
print("太小了!")
else:
print("太大了!")

# 提示剩余次数
if remaining > 1:
print(f"还有{remaining - 1}次机会")
print()
else:
# 循环正常结束(没有break),说明没猜中
print()
print("=" * 40)
print(f"很遗憾,你没能在{attempts}次内猜中")
print(f"正确答案是:{secret}")
print("=" * 40)

print()
print("游戏结束,谢谢游玩!")

代码解析

import random导入Python的随机数模块,random.randint(1, 100)生成1到100之间的随机整数,for...else当循环正常结束(没有break)时执行else块,使用break在猜对时立即退出循环,根据猜的数字给出”太大”或”太小”的提示。

常见错误

错误1:忘记冒号

1
2
if age >= 18  # 缺少冒号
print("成年")

正确做法:

1
2
if age >= 18:  # 加上冒号
print("成年")

错误2:缩进不正确

1
2
if age >= 18:
print("成年") # 缺少缩进

正确做法:

1
2
if age >= 18:
print("成年") # 添加缩进(4个空格)

错误3:混淆赋值和比较

1
2
if age = 18:  # 错误:= 是赋值,不是比较
print("18岁")

正确做法:

1
2
if age == 18:  # 正确:== 是比较
print("18岁")

错误4:无限循环

1
2
3
4
count = 0
while count < 5:
print(count)
# 忘记增加 count,导致无限循环

正确做法:

1
2
3
4
count = 0
while count < 5:
print(count)
count += 1 # 记得更新循环变量

系列导航