流程控制

什么是流程控制?

流程控制用于控制程序的执行顺序,包括:

  • 条件判断:根据条件执行不同的代码
  • 循环:重复执行某段代码
  • 跳转:改变程序的执行流程

条件判断

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 >= 70:
    print("中等")
elif score >= 60:
    print("及格")
else:
    print("不及格")

嵌套 if

age = 25
has_license = True

if age >= 18:
    if has_license:
        print("可以驾驶")
    else:
        print("需要考取驾照")
else:
    print("年龄不够")

条件表达式(三元运算符)

age = 20

status = "成年人" if age >= 18 else "未成年人"
print(status)

多条件判断

age = 25
has_license = True

if age >= 18 and has_license:
    print("可以驾驶")

if age < 18 or not has_license:
    print("不能驾驶")

循环语句

for 循环

用于遍历序列(列表、元组、字符串等)。

fruits = ["苹果", "香蕉", "橙子"]

for fruit in fruits:
    print(fruit)

for i in range(5):
    print(i)

for i in range(1, 6):
    print(i)

for i in range(0, 10, 2):
    print(i)

range() 函数

range(5)          
range(1, 6)       
range(0, 10, 2)   
range(10, 0, -1)  

遍历字符串

s = "Python"

for char in s:
    print(char)

遍历字典

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

for key in person:
    print(key)

for value in person.values():
    print(value)

for key, value in person.items():
    print(f"{key}: {value}")

enumerate()

同时获取索引和值:

fruits = ["苹果", "香蕉", "橙子"]

for index, fruit in enumerate(fruits):
    print(f"{index}: {fruit}")

for index, fruit in enumerate(fruits, 1):
    print(f"{index}: {fruit}")

while 循环

count = 0

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

while-else

count = 0

while count < 5:
    print(count)
    count += 1
else:
    print("循环结束")

无限循环

while True:
    user_input = input("输入 q 退出:")
    if user_input == "q":
        break

循环控制

break 语句

跳出整个循环:

for i in range(10):
    if i == 5:
        break
    print(i)

print("循环结束")

continue 语句

跳过本次循环,继续下一次:

for i in range(10):
    if i % 2 == 0:
        continue
    print(i)

pass 语句

占位符,不做任何操作:

for i in range(5):
    pass

if True:
    pass

def my_function():
    pass

循环中的 else

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

for i in range(5):
    if i == 3:
        break
    print(i)
else:
    print("循环被 break 打断,不会执行这里")

嵌套循环

基本嵌套

for i in range(3):
    for j in range(3):
        print(f"({i}, {j})", end=" ")
    print()

打印九九乘法表

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

查找素数

for num in range(2, 20):
    for i in range(2, num):
        if num % i == 0:
            break
    else:
        print(f"{num} 是素数")

列表推导式

基本语法

squares = [x**2 for x in range(10)]
print(squares)  

evens = [x for x in range(10) if x % 2 == 0]
print(evens)  

带条件

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

evens = [x for x in numbers if x % 2 == 0]
odds = [x for x in numbers if x % 2 != 0]

print(evens)  
print(odds)   

嵌套循环

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

flattened = [num for row in matrix for num in row]
print(flattened)  

字典推导式

squares = {x: x**2 for x in range(5)}
print(squares)  

names = ["张三", "李四", "王五"]
name_dict = {name: len(name) for name in names}
print(name_dict)  

集合推导式

squares = {x**2 for x in range(10)}
print(squares)  

实践练习

练习 1:猜数字游戏

import random

number = random.randint(1, 100)
count = 0

while True:
    guess = int(input("猜一个数字(1-100):"))
    count += 1
    
    if guess < number:
        print("太小了")
    elif guess > number:
        print("太大了")
    else:
        print(f"恭喜!你用了 {count} 次猜对了!")
        break

练习 2:登录验证

username = "admin"
password = "123456"
attempts = 3

while attempts > 0:
    user = input("用户名:")
    pwd = input("密码:")
    
    if user == username and pwd == password:
        print("登录成功!")
        break
    else:
        attempts -= 1
        print(f"用户名或密码错误,还有 {attempts} 次机会")

if attempts == 0:
    print("登录失败,请稍后再试")

练习 3:打印图案

n = 5

for i in range(1, n + 1):
    print("*" * i)

for i in range(n, 0, -1):
    print(" " * (n - i) + "*" * (2 * i - 1))

练习 4:斐波那契数列

n = 10
a, b = 0, 1

for _ in range(n):
    print(a, end=" ")
    a, b = b, a + b

练习 5:统计字符

text = "Hello World, Hello Python"

char_count = {}
for char in text:
    if char in char_count:
        char_count[char] += 1
    else:
        char_count[char] = 1

print(char_count)

小结

本章我们学习了:

  • 条件判断:if、if-else、if-elif-else
  • 循环语句:for 循环、while 循环
  • 循环控制:break、continue、pass
  • 嵌套循环的使用
  • 列表推导式、字典推导式、集合推导式

流程控制是编程的核心概念,掌握它们可以编写出复杂的逻辑。在下一章中,我们将学习列表这一重要的数据结构。