02-控制流程与数据结构

judgingly
7
2026-02-14

Python 学习教程 - 第二篇:控制流程与数据结构

欢迎回到 Python 学习之旅!今天我们将学习 Python 的核心概念:控制流程和基本数据结构。

目录

  1. 条件判断(if-else)
  2. 循环语句(for 和 while)
  3. 列表(List)
  4. 字典(Dictionary)
  5. 函数(Function)
  6. 综合练习
  7. 总结

条件判断(if-else)

条件判断让我们能够根据不同的情况执行不同的代码。

基本语法

# 单个 if 语句
if condition:
    # 条件为真时执行的代码
    print("条件为真")

if-else 语句

age = 18

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}")

输出:

你的成绩是:B

嵌套 if

age = 20
has_id = True

if age >= 18:
    if has_id:
        print("你可以进入酒吧")
    else:
        print("你需要出示身份证")
else:
    print("你未达到法定年龄,不能进入")

逻辑运算符

# and:两个条件都为真
age = 25
has_license = True

if age >= 18 and has_license:
    print("你可以开车")

# or:至少一个条件为真
has_ticket = True
has_money = False

if has_ticket or has_money:
    print("你可以看电影")

# not:取反
is_active = False

if not is_active:
    print("账号未激活")

循环语句(for 和 while)

循环让我们能够重复执行代码。

for 循环

# 遍历列表
fruits = ["苹果", "香蕉", "橙子", "葡萄"]

for fruit in fruits:
    print(f"我喜欢吃:{fruit}")

输出:

我喜欢吃:苹果
我喜欢吃:香蕉
我喜欢吃:橙子
我喜欢吃:葡萄

range() 函数

# range(5) 生成 0, 1, 2, 3, 4
for i in range(5):
    print(f"当前数字:{i}")

# range(1, 6) 生成 1, 2, 3, 4, 5
for i in range(1, 6):
    print(f"当前数字:{i}")

# range(0, 10, 2) 生成 0, 2, 4, 6, 8(步长为2)
for i in range(0, 10, 2):
    print(f"当前数字:{i}")

while 循环

count = 0

while count < 5:
    print(f"当前计数:{count}")
    count += 1  # 注意:循环必须递增,否则会无限循环

输出:

当前计数:0
当前计数:1
当前计数:2
当前计数:3
当前计数:4

break 和 continue

# break:退出循环
for i in range(5):
    if i == 3:
        break  # 遇到3时退出循环
    print(f"当前数字:{i}")

# continue:跳过本次循环
for i in range(5):
    if i == 2:
        continue  # 跳过2
    print(f"当前数字:{i}")

输出:

当前数字:0
当前数字:1
当前数字:4

列表(List)

列表是 Python 中最常用的数据结构之一。

创建列表

# 空列表
empty_list = []

# 有元素的列表
fruits = ["苹果", "香蕉", "橙子"]
numbers = [1, 2, 3, 4, 5]
mixed = [1, "hello", 3.14, True]

访问列表元素

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

# 通过索引访问(从0开始)
print(fruits[0])  # 苹果
print(fruits[1])  # 香蕉
print(fruits[-1]) # 葡萄(最后一个元素)

# 获取列表长度
print(len(fruits))  # 4

添加元素

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

# append():添加到末尾
fruits.append("橙子")
print(fruits)  # ['苹果', '香蕉', '橙子']

# insert():插入到指定位置
fruits.insert(1, "葡萄")
print(fruits)  # ['苹果', '葡萄', '香蕉', '橙子']

# extend():添加多个元素
more_fruits = ["西瓜", "草莓"]
fruits.extend(more_fruits)
print(fruits)

删除元素

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

# remove():删除指定值的元素
fruits.remove("香蕉")
print(fruits)  # ['苹果', '橙子', '葡萄']

# pop():删除并返回指定索引的元素
removed = fruits.pop(0)
print(f"删除了:{removed}")
print(fruits)  # ['橙子', '葡萄']

# clear():清空列表
fruits.clear()
print(fruits)  # []

列表操作

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

# 排序
numbers.sort()
print(numbers)  # [1, 1, 2, 3, 4, 5, 6, 9]

# 反转
numbers.reverse()
print(numbers)  # [9, 6, 5, 4, 3, 2, 1, 1]

# 切片
nums = [1, 2, 3, 4, 5]
print(nums[1:4])   # [2, 3, 4](从索引1到3)
print(nums[:3])    # [1, 2, 3](从头到索引2)
print(nums[2:])    # [3, 4, 5](从索引2到末尾)
print(nums[::-1])  # [5, 4, 3, 2, 1](完全反转)

字典(Dictionary)

字典是键值对的集合。

创建字典

# 空字典
empty_dict = {}

# 有元素的字典
person = {
    "name": "张三",
    "age": 25,
    "city": "北京"
}

访问字典元素

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

# 通过键访问
print(person["name"])      # 张三
print(person.get("age"))   # 25

# 使用 get() 可以避免 KeyError
print(person.get("gender"))  # None(键不存在)
print(person.get("gender", "未知"))  # 未知(提供默认值)

添加和修改元素

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

# 添加新键值对
person["gender"] = "男"
print(person)  # {'name': '张三', 'age': 25, 'gender': '男'}

# 修改已有键的值
person["age"] = 26
print(person)  # {'name': '张三', 'age': 26, 'gender': '男'}

# update():更新多个键值对
person.update({"city": "上海", "gender": "男"})
print(person)

删除元素

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

# del 删除指定键
del person["city"]
print(person)  # {'name': '张三', 'age': 25, 'gender': '男'}

# pop():删除并返回值
age = person.pop("age")
print(f"删除的年龄:{age}")
print(person)  # {'name': '张三', 'gender': '男'}

# clear():清空字典
person.clear()
print(person)  # {}

遍历字典

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

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

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

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

函数(Function)

函数让我们能够重用代码。

定义函数

def greet():
    """简单的问候函数"""
    print("你好!欢迎来到 Python 世界!")

# 调用函数
greet()

带参数的函数

def greet(name):
    """带参数的问候函数"""
    print(f"你好,{name}!")

greet("张三")
greet("李四")

带返回值的函数

def add(a, b):
    """返回两个数的和"""
    return a + b

result = add(3, 5)
print(f"3 + 5 = {result}")  # 3 + 5 = 8

默认参数

def greet(name, greeting="你好"):
    """带默认参数的问候函数"""
    print(f"{greeting},{name}!")

greet("张三")           # 你好,张三!
greet("李四", "嗨")     # 嗨,李四!

可变参数

def sum_all(*numbers):
    """计算所有参数的和"""
    total = 0
    for num in numbers:
        total += num
    return total

print(sum_all(1, 2, 3))      # 6
print(sum_all(1, 2, 3, 4, 5)) # 15

关键字参数

def create_user(name, age, city="北京"):
    """创建用户信息"""
    return {
        "name": name,
        "age": age,
        "city": city
    }

user1 = create_user("张三", 25)
user2 = create_user("李四", 30, "上海")

print(user1)   # {'name': '张三', 'age': 25, 'city': '北京'}
print(user2)   # {'name': '李四', 'age': 30, 'city': '上海'}

综合练习

练习1:猜数字游戏

import random

number = random.randint(1, 100)
guess = None

print("我已经想好了一个1到100之间的数字!")

while guess != number:
    guess = int(input("请输入你的猜测:"))

    if guess < number:
        print("太小了!")
    elif guess > number:
        print("太大了!")
    else:
        print("恭喜你猜对了!")

print("游戏结束!")

练习2:成绩管理系统

def add_student(students, name, score):
    """添加学生"""
    students[name] = score
    print(f"已添加学生:{name}, 成绩:{score}")

def update_score(students, name, new_score):
    """更新成绩"""
    if name in students:
        students[name] = new_score
        print(f"已更新 {name} 的成绩为 {new_score}")
    else:
        print("学生不存在!")

def get_average_score(students):
    """计算平均分"""
    if not students:
        return 0
    total = sum(students.values())
    return total / len(students)

# 使用示例
students = {}
add_student(students, "张三", 85)
add_student(students, "李四", 92)
add_student(students, "王五", 78)

print(f"\n平均分:{get_average_score(students):.1f}")

update_score(students, "张三", 90)
print(f"更新后平均分:{get_average_score(students):.1f}")

练习3:购物车

def add_to_cart(cart, item, price):
    """添加商品到购物车"""
    if item in cart:
        cart[item] += price
    else:
        cart[item] = price
    print(f"已添加:{item},价格:{price}")

def remove_from_cart(cart, item):
    """从购物车移除商品"""
    if item in cart:
        del cart[item]
        print(f"已移除:{item}")
    else:
        print("商品不存在!")

def show_cart(cart):
    """显示购物车"""
    print("\n购物车:")
    for item, price in cart.items():
        print(f"{item}: {price}")
    print(f"总计:{sum(cart.values())}")

# 使用示例
cart = {}
add_to_cart(cart, "苹果", 5)
add_to_cart(cart, "香蕉", 3)
add_to_cart(cart, "苹果", 2)

show_cart(cart)
remove_from_cart(cart, "香蕉")
show_cart(cart)

总结

今天我们学习了:

条件判断:if、elif、else,以及逻辑运算符
循环语句:for、while、break、continue
列表:创建、访问、添加、删除、排序、切片
字典:创建、访问、添加、修改、删除、遍历
函数:定义参数、返回值、默认参数、可变参数

重要概念

  1. 索引从0开始:列表和字符串的第一个元素索引是0
  2. 冒号和缩进:if、for 等语句后面的冒号和缩进很重要
  3. 列表和字典的区别:列表是有序的,字典是无序的键值对
  4. 函数让代码更易维护:把重复的代码封装成函数

下次学习预告

下一篇我们将学习:

  • 文件操作(读写文件)
  • 异常处理(try-except)
  • 面向对象编程基础
  • 模块和包的使用

继续加油!编程是一个不断练习的过程!

动物装饰