Python 学习教程 - 第二篇:控制流程与数据结构
欢迎回到 Python 学习之旅!今天我们将学习 Python 的核心概念:控制流程和基本数据结构。
目录
条件判断(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
✅ 列表:创建、访问、添加、删除、排序、切片
✅ 字典:创建、访问、添加、修改、删除、遍历
✅ 函数:定义参数、返回值、默认参数、可变参数
重要概念
- 索引从0开始:列表和字符串的第一个元素索引是0
- 冒号和缩进:if、for 等语句后面的冒号和缩进很重要
- 列表和字典的区别:列表是有序的,字典是无序的键值对
- 函数让代码更易维护:把重复的代码封装成函数
下次学习预告
下一篇我们将学习:
- 文件操作(读写文件)
- 异常处理(try-except)
- 面向对象编程基础
- 模块和包的使用
继续加油!编程是一个不断练习的过程!