HiHuo
首页
博客
手册
工具
关于
首页
博客
手册
工具
关于
  • Python 新手入门教程

    • Python新手入门教程 - 零基础学Python,8章+HTTP服务实战 | HiHuo
    • Python简介与环境搭建 - 安装配置Python开发环境 | HiHuo
    • Python基础语法 - 缩进、变量、注释、输入输出 | HiHuo
    • Python数据类型详解 - 字符串、列表、字典、元组 | HiHuo
    • Python流程控制 - if条件判断、for/while循环 | HiHuo
    • Python函数与模块 - 定义函数、参数传递、模块导入 | HiHuo
    • Python面向对象编程 - 类、对象、继承、多态 | HiHuo
    • Python文件与异常处理 - 读写文件、try/except异常捕获 | HiHuo
    • Python HTTP服务项目实战 - 构建待办事项API服务 | HiHuo

流程控制

程序的执行流程主要有三种:顺序、分支、循环。

条件判断

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:
    grade = "A"
elif score >= 80:
    grade = "B"
elif score >= 70:
    grade = "C"
elif score >= 60:
    grade = "D"
else:
    grade = "F"

print(f"成绩等级: {grade}")

嵌套条件

age = 25
has_ticket = True

if age >= 18:
    if has_ticket:
        print("可以入场")
    else:
        print("请先购票")
else:
    print("未成年人需要监护人陪同")

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

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

# 等价于
if age >= 18:
    status = "成年"
else:
    status = "未成年"

典型案例:登录验证

# 用户登录验证
correct_username = "admin"
correct_password = "123456"

username = input("用户名: ")
password = input("密码: ")

if username == correct_username and password == correct_password:
    print("登录成功!")
elif username != correct_username:
    print("用户名不存在")
else:
    print("密码错误")

典型案例:计算器

# 简单计算器
num1 = float(input("第一个数: "))
operator = input("运算符 (+, -, *, /): ")
num2 = float(input("第二个数: "))

if operator == "+":
    result = num1 + num2
elif operator == "-":
    result = num1 - num2
elif operator == "*":
    result = num1 * num2
elif operator == "/":
    if num2 != 0:
        result = num1 / num2
    else:
        result = "错误:除数不能为0"
else:
    result = "错误:不支持的运算符"

print(f"结果: {result}")

match-case 语句(Python 3.10+)

Python 3.10 引入了结构化模式匹配。

command = "start"

match command:
    case "start":
        print("启动程序")
    case "stop":
        print("停止程序")
    case "restart":
        print("重启程序")
    case _:
        print("未知命令")

# 带条件的匹配
def describe_number(n):
    match n:
        case 0:
            return "零"
        case n if n > 0:
            return "正数"
        case n if n < 0:
            return "负数"

# 解构匹配
point = (3, 4)
match point:
    case (0, 0):
        print("原点")
    case (x, 0):
        print(f"在x轴上,x={x}")
    case (0, y):
        print(f"在y轴上,y={y}")
    case (x, y):
        print(f"点({x}, {y})")

循环

for 循环

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

# 遍历字符串
for char in "Hello":
    print(char)

# 遍历字典
person = {"name": "张三", "age": 25}
for key, value in person.items():
    print(f"{key}: {value}")

# 使用 range()
for i in range(5):         # 0, 1, 2, 3, 4
    print(i)

for i in range(1, 6):      # 1, 2, 3, 4, 5
    print(i)

for i in range(0, 10, 2):  # 0, 2, 4, 6, 8(步长2)
    print(i)

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

enumerate() 获取索引

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

# 方式一:使用 enumerate
for index, fruit in enumerate(fruits):
    print(f"{index}: {fruit}")

# 从1开始计数
for index, fruit in enumerate(fruits, 1):
    print(f"{index}: {fruit}")

# 方式二:使用 range(不推荐)
for i in range(len(fruits)):
    print(f"{i}: {fruits[i]}")

while 循环

# 基本 while 循环
count = 0
while count < 5:
    print(count)
    count += 1

# 用户输入验证
password = ""
while password != "123456":
    password = input("请输入密码: ")
print("密码正确!")

典型案例:猜数字游戏

import random

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

print("猜数字游戏!范围 1-100")

while guess != target:
    guess = int(input("请猜一个数: "))
    attempts += 1

    if guess < target:
        print("太小了!")
    elif guess > target:
        print("太大了!")
    else:
        print(f"恭喜你猜对了!用了 {attempts} 次")

break 和 continue

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

# continue:跳过本次循环
for i in range(10):
    if i % 2 == 0:
        continue
    print(i)  # 输出 1, 3, 5, 7, 9

# 实际应用:查找第一个偶数
numbers = [1, 3, 5, 8, 9, 10]
for num in numbers:
    if num % 2 == 0:
        print(f"找到第一个偶数: {num}")
        break

for-else 和 while-else

循环正常结束时执行 else,break 跳出时不执行。

# 查找元素
numbers = [1, 3, 5, 7, 9]
target = 4

for num in numbers:
    if num == target:
        print(f"找到 {target}")
        break
else:
    print(f"{target} 不在列表中")

# 判断质数
def is_prime(n):
    if n < 2:
        return False
    for i in range(2, int(n**0.5) + 1):
        if n % i == 0:
            return False
    return True

# 使用 for-else 判断质数
n = 17
for i in range(2, int(n**0.5) + 1):
    if n % i == 0:
        print(f"{n} 不是质数")
        break
else:
    print(f"{n} 是质数")

嵌套循环

# 打印乘法表
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
# ...

典型案例:打印图形

# 打印三角形
n = 5
for i in range(1, n + 1):
    print("*" * i)

# *
# **
# ***
# ****
# *****

# 打印倒三角形
for i in range(n, 0, -1):
    print("*" * i)

# 打印金字塔
for i in range(1, n + 1):
    spaces = " " * (n - i)
    stars = "*" * (2 * i - 1)
    print(spaces + stars)

#     *
#    ***
#   *****
#  *******
# *********

推导式

推导式是 Python 特有的简洁语法。

列表推导式

# 基本形式
squares = [x**2 for x in range(1, 6)]
# [1, 4, 9, 16, 25]

# 带条件
evens = [x for x in range(10) if x % 2 == 0]
# [0, 2, 4, 6, 8]

# 嵌套循环
matrix = [(i, j) for i in range(3) for j in range(3)]
# [(0,0), (0,1), (0,2), (1,0), (1,1), (1,2), (2,0), (2,1), (2,2)]

# if-else
labels = ["偶数" if x % 2 == 0 else "奇数" for x in range(5)]
# ['偶数', '奇数', '偶数', '奇数', '偶数']

字典推导式

# 基本形式
squares = {x: x**2 for x in range(1, 6)}
# {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

# 键值互换
original = {"a": 1, "b": 2, "c": 3}
swapped = {v: k for k, v in original.items()}
# {1: 'a', 2: 'b', 3: 'c'}

# 带条件
words = ["apple", "banana", "cherry"]
lengths = {w: len(w) for w in words if len(w) > 5}
# {'banana': 6, 'cherry': 6}

集合推导式

# 基本形式
squares = {x**2 for x in range(-3, 4)}
# {0, 1, 4, 9}(自动去重)

# 从字符串提取元音
text = "Hello, World!"
vowels = {c.lower() for c in text if c.lower() in "aeiou"}
# {'e', 'o'}

生成器表达式

# 生成器不立即计算,节省内存
gen = (x**2 for x in range(1000000))
print(next(gen))  # 1
print(next(gen))  # 4

# 用于求和等场景
total = sum(x**2 for x in range(100))

典型案例:数据处理

# 学生成绩处理
students = [
    {"name": "张三", "score": 85},
    {"name": "李四", "score": 92},
    {"name": "王五", "score": 58},
    {"name": "赵六", "score": 76}
]

# 获取所有姓名
names = [s["name"] for s in students]

# 获取及格学生
passed = [s for s in students if s["score"] >= 60]

# 创建成绩字典
score_dict = {s["name"]: s["score"] for s in students}

# 计算平均分
avg = sum(s["score"] for s in students) / len(students)
print(f"平均分: {avg:.2f}")

练习

练习1:FizzBuzz

# 经典面试题
for i in range(1, 101):
    if i % 15 == 0:
        print("FizzBuzz")
    elif i % 3 == 0:
        print("Fizz")
    elif i % 5 == 0:
        print("Buzz")
    else:
        print(i)

练习2:找出所有质数

def find_primes(n):
    primes = []
    for num in range(2, n + 1):
        is_prime = True
        for i in range(2, int(num**0.5) + 1):
            if num % i == 0:
                is_prime = False
                break
        if is_prime:
            primes.append(num)
    return primes

print(find_primes(50))
# [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]

练习3:斐波那契数列

def fibonacci(n):
    fib = [0, 1]
    for i in range(2, n):
        fib.append(fib[-1] + fib[-2])
    return fib[:n]

print(fibonacci(10))
# [0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

小结

  • if-elif-else 用于条件判断
  • for 循环用于遍历序列
  • while 循环用于条件循环
  • break 跳出循环,continue 跳过本次
  • 推导式是 Python 简洁高效的语法
  • for-else 在循环正常结束时执行 else
Prev
Python数据类型详解 - 字符串、列表、字典、元组 | HiHuo
Next
Python函数与模块 - 定义函数、参数传递、模块导入 | HiHuo