跳到主要内容

Python 控制流

控制流用于控制程序的执行顺序。本章将介绍条件语句和循环结构。

条件语句

if 语句

基本的 if 语句结构:

age = 18

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

if-else 语句

age = 16

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

if-elif-else 语句

score = 85

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

嵌套条件

age = 25
is_student = True

if age >= 18:
if is_student:
print("成年学生")
else:
print("成年非学生")
else:
print("未成年")

简化写法

# 单行 if 语句
age = 20
status = "成年" if age >= 18 else "未成年"
print(status) # 输出:成年

循环

for 循环

基本语法

# 遍历列表
fruits = ["苹果", "香蕉", "橙子"]
for fruit in fruits:
print(fruit)

使用 range()

range() 函数生成一个数字序列:

# range(stop) - 从 0 到 stop-1
for i in range(5):
print(i) # 0, 1, 2, 3, 4

# range(start, stop) - 从 start 到 stop-1
for i in range(2, 6):
print(i) # 2, 3, 4, 5

# range(start, stop, step) - 指定步长
for i in range(0, 10, 2):
print(i) # 0, 2, 4, 6, 8

# 倒序
for i in range(5, 0, -1):
print(i) # 5, 4, 3, 2, 1

遍历字符串

text = "Python"
for char in text:
print(char)

遍历字典

person = {"name": "张三", "age": 20, "city": "北京"}

# 遍历键
for key in person:
print(key)

# 遍历值
for value in person.values():
print(value)

# 遍历键值对
for key, value in person.items():
print(f"{key}: {value}")

while 循环

基本语法:

count = 0
while count < 5:
print(count)
count += 1

死循环(谨慎使用)

while True:
user_input = input("输入 'quit' 退出:")
if user_input == "quit":
break
print(f"你输入了:{user_input}")

循环控制

break - 跳出循环

for i in range(10):
if i == 5:
break
print(i) # 输出 0, 1, 2, 3, 4

continue - 跳过当前迭代

for i in range(5):
if i == 2:
continue
print(i) # 输出 0, 1, 3, 4(跳过 2)

pass - 占位符

for i in range(5):
if i == 2:
pass # 什么都不做,继续执行
print(i)

循环else子句

循环可以有一个 else 子句,当循环正常结束(不是因为 break)时执行:

for i in range(3):
print(i)
else:
print("循环正常结束")

# 如果使用 break,则 else 不会执行
for i in range(3):
if i == 1:
break
print(i)
else:
print("循环正常结束") # 不会执行

实战练习

练习 1:计算 1 到 100 的和

total = 0
for i in range(1, 101):
total += i
print(f"1+2+...+100 = {total}")

练习 2:打印九九乘法表

for i in range(1, 10):
for j in range(1, i + 1):
print(f"{j}*{i}={i*j}", end="\t")
print()

练习 3:判断素数

num = 17
is_prime = True

if num < 2:
is_prime = False
else:
for i in range(2, int(num**0.5) + 1):
if num % i == 0:
is_prime = False
break

print(f"{num}是素数:{is_prime}")

练习 4:猜数字游戏

import random

target = random.randint(1, 100)
guess = 0
attempts = 0

while guess != target:
guess = int(input("请输入一个1-100的数字:"))
attempts += 1

if guess > target:
print("猜大了!")
elif guess < target:
print("猜小了!")

print(f"恭喜你猜对了!共用了{attempts}次")

练习 5:输出菱形

n = 5

# 上半部分
for i in range(1, n + 1):
print(" " * (n - i) + "*" * (2 * i - 1))

# 下半部分
for i in range(n - 1, 0, -1):
print(" " * (n - i) + "*" * (2 * i - 1))

pass、break 和 continue 的区别

关键字作用说明
pass空操作不做任何事,常用作占位符
break跳出循环终止当前循环
continue跳过本次循环继续下一次循环

小结

本章我们学习了:

  1. 条件语句(if、elif、else)
  2. for 循环的使用
  3. while 循环的使用
  4. 循环控制语句(break、continue、pass)
  5. 循环的 else 子句
  6. 多个实战练习

练习

  1. 打印 1 到 100 中能被 3 整除的数
  2. 求斐波那契数列的前 20 项
  3. 找出 100 以内的所有素数
  4. 模拟用户登录(最多尝试 3 次)