🐍 Python 讲义(基础入门)
1. 基础语法
✅ 变量与数据类型
Python 是动态类型语言,变量无需提前声明类型:
# 数值类型
age = 25 # 整型
height = 175.5 # 浮点型
# 字符串
name = "小明"
message = '你好,世界!' # 单引号或双引号均可
# 布尔值
is_student = True
has_pet = False
# 使用 f-string 打印变量
print(f"我叫{name},今年{age}岁,身高{height}cm")
✅ 条件判断
使用 if-elif-else
实现多分支逻辑判断:
score = 85
if score >= 90:
print("优秀!")
elif score >= 80:
print("良好!")
elif score >= 60:
print("及格")
else:
print("需要努力了")
✅ 循环结构
🔁 for 循环(用于遍历可迭代对象)
for i in range(1, 6):
print(i)
fruits = ["苹果", "香蕉", "橙子"]
for fruit in fruits:
print(f"我喜欢吃{fruit}")
🔁 while 循环(用于未知次数的循环)
import random
secret = random.randint(1, 10)
guess = 0
while guess != secret:
guess = int(input("猜一个 1 到 10 的数:"))
if guess > secret:
print("猜大了!")
elif guess < secret:
print("猜小了!")
print("恭喜,猜对了!")
✅ 函数定义与调用
def say_hello(name):
"""打招呼函数"""
return f"你好,{name}!"
print(say_hello("小红")) # 输出:你好,小红!
# 带默认参数的函数
def calculate_price(price, discount=0.9):
return price * discount
print(calculate_price(100)) # 90.0
print(calculate_price(100, 0.8)) # 80.0
2. 列表与元组
✅ 列表操作
students = ["小明", "小红", "小刚", "小丽"]
# 访问与修改
print(students[0]) # 小明
print(students[-1]) # 小丽
students.append("小华") # 添加元素
students.insert(1, "小芳") # 指定位置添加
students.remove("小刚") # 删除指定元素
removed = students.pop() # 弹出末尾
print(len(students)) # 长度
✅ 列表推导式
# 平方数列表
squares = [i**2 for i in range(1, 11)]
# 带条件:偶数平方
even_squares = [i**2 for i in range(1, 11) if i % 2 == 0]
✅ 排序操作
numbers = [3, 1, 4, 1, 5, 9, 2]
print(sorted(numbers)) # 不改变原列表
numbers.sort() # 原地排序
numbers.sort(reverse=True) # 降序
words = ["苹果", "香蕉", "葡萄"]
words.sort(key=len) # 按长度排序
✅ 元组(不可变序列)
person = ("张三", 25, "北京")
name, age, city = person
print(f"{name} 今年 {age} 岁,住在 {city}")
# 元组作为函数返回值或字典键
def get_info():
return "李四", 30, "上海"
locations = {
(39.9, 116.4): "北京",
(31.2, 121.5): "上海"
}
3. 字典与集合
✅ 字典操作
student = {
"name": "小明",
"age": 15,
"scores": {"语文": 95, "数学": 90}
}
student["age"] = 16
student["gender"] = "男"
# 安全访问
print(student.get("phone", "未知"))
student.setdefault("address", "北京")
✅ 字典推导式
# 平方字典
squares = {x: x**2 for x in range(1, 6)}
# 反转字典
inventory = {"苹果": 10, "香蕉": 5}
reversed_dict = {v: k for k, v in inventory.items()}
# 筛选高分
scores = {"小明": 95, "小红": 85, "小刚": 72}
high_scores = {name: score for name, score in scores.items() if score >= 80}
✅ 集合与应用
fruits = {"苹果", "香蕉", "橙子", "苹果"}
print(fruits) # 去重后:{'苹果', '香蕉', '橙子'}
# 集合运算
a = {1, 2, 3}
b = {3, 4, 5}
print(a | b) # 并集
print(a & b) # 交集
print(a - b) # 差集
print(a ^ b) # 对称差集
# 快速去重
nums = [1, 2, 2, 3, 3]
unique = list(set(nums)) # [1, 2, 3]
4. 函数是“一等公民”
✅ 函数赋值给变量
def greet(name):
return f"你好,{name}!"
my_func = greet
print(my_func("小明"))
✅ 函数作为参数
def add(a, b): return a + b
def multiply(a, b): return a * b
def calculate(func, x, y):
return func(x, y)
print(calculate(add, 5, 3)) # 8
print(calculate(multiply, 5, 3)) # 15
✅ 函数作为返回值
def create_multiplier(n):
def multiplier(x):
return x * n
return multiplier
double = create_multiplier(2)
print(double(5)) # 10
✅ Lambda(匿名函数)
square = lambda x: x ** 2
print(square(5)) # 25
# 配合 map, filter, sorted 使用
nums = [1, 2, 3, 4]
squared = list(map(lambda x: x**2, nums)) # [1, 4, 9, 16]
evens = list(filter(lambda x: x % 2 == 0, nums)) # [2, 4]
students = [("小明", 85), ("小红", 92)]
students.sort(key=lambda x: x[1])
5. 文件操作(File I/O)
✅ 打开与读取文件
使用 open()
函数操作文件。常用模式:
'r'
:只读(默认)
'w'
:写入(会清空原内容)
'a'
:追加
'b'
:二进制
'+'
:读写
# 假设 test.txt 文件内容如下:
# Hello Python!
# 学习文件操作
# 读取整个文件
with open("test.txt", "r", encoding="utf-8") as f:
content = f.read()
print(content)
# 按行读取
with open("test.txt", "r", encoding="utf-8") as f:
for line in f:
print(line.strip()) # strip() 去掉换行符
✅ 写入文件
# 写入新文件(原有内容会被清空)
with open("output.txt", "w", encoding="utf-8") as f:
f.write("第一行内容\n")
f.write("第二行内容\n")
# 追加内容
with open("output.txt", "a", encoding="utf-8") as f:
f.write("这是追加的一行\n")
✅ 文件是否存在
import os
if os.path.exists("test.txt"):
print("文件存在")
else:
print("文件不存在")
✅ 文件常见操作总结
操作 | 方法 |
检查是否存在 | os.path.exists() |
删除文件 | os.remove() |
创建文件夹 | os.mkdir() |
获取当前路径 | os.getcwd() |
遍历目录 | os.listdir() |
6. 异常处理(Error Handling)
✅ 为什么需要异常处理?
程序运行时可能遇到错误(如文件不存在、除以零、输入错误等),如果没有妥善处理,会导致程序崩溃。
✅ try-except 结构
try:
num = int(input("请输入一个整数:"))
result = 10 / num
print(f"结果是:{result}")
except ValueError:
print("请输入有效的整数!")
except ZeroDivisionError:
print("除数不能为0!")
✅ 捕获所有异常(不推荐常用)
try:
# 可能出错的代码
...
except Exception as e:
print(f"出错了:{e}")
✅ finally 子句
无论是否发生异常,finally
块都会执行。通常用于清理资源(如关闭文件、释放连接等):
try:
f = open("test.txt", "r")
print(f.read())
except FileNotFoundError:
print("文件不存在")
finally:
f.close() # 保证最终关闭文件
✅ 自定义异常(进阶)
class MyError(Exception):
pass
def check_age(age):
if age < 0:
raise MyError("年龄不能是负数")
try:
check_age(-5)
except MyError as e:
print(f"自定义异常:{e}")