1. 变量与数据类型
变量赋值
name = "Alice" # 字符串类型(str),用于存储文本数据
age = 30 # 整数类型(int),用于存储整数值
height = 1.75 # 浮点数类型(float),用于存储带小数点的数值
is_student = False # 布尔类型(bool),只有True和False两种取值
数据类型转换
# 字符串转换为数值类型
num_str = "123"
num_int = int(num_str) # 转换为整数,结果:123
num_float = float(num_str) # 转换为浮点数,结果:123.0
# 数值转换为布尔值
bool_val = bool(0) # 转换为布尔值,结果:False
bool_val = bool(42) # 转换为布尔值,结果:True
打印变量
# 使用f-string格式化输出(Python 3.6+)
print(f"姓名: {name}, 年龄: {age}")
# 显示变量的数据类型
print("原始数据类型:",
f"name: {type(name)}",
f"age: {type(age)}",
f"height: {type(height)}",
f"is_student: {type(is_student)}")
2. 条件语句
if-elif-else语句
x = 10
if x > 20:
print("x大于20") # 条件不满足,跳过
elif x < 5:
print("x小于5") # 条件不满足,跳过
else:
print("x在5到20之间") # 这个分支会被执行
三元表达式
score = 75
result = "及格" if score >= 60 else "不及格" # 相当于if-else的简写形式
print(f"考试成绩: {score}, 结果: {result}") # 输出:考试成绩: 75, 结果: 及格
多条件判断
temperature = 25
if temperature >= 20 and temperature < 30: # 可以简写为 20 <= temperature < 30
print("适宜的温度范围") # 输出:适宜的温度范围
3. 循环结构
for循环示例
fruits = ["apple", "banana", "cherry"] # 列表数据结构
for fruit in fruits: # 遍历列表中的每个元素
print(f"我喜欢吃{fruit}") # 会依次输出:我喜欢吃apple、我喜欢吃banana、我喜欢吃cherry
while循环示例
count = 0
while count < 5: # 条件为True时继续循环
print(f"计数: {count}") # 输出:计数: 0到计数: 4
count += 1 # 递增操作,相当于 count = count + 1
带索引的循环
for index, fruit in enumerate(fruits, start=1): # enumerate返回(索引,元素)元组
print(f"水果{index}: {fruit}") # 输出:水果1: apple、水果2: banana、水果3: cherry
循环控制语句
for num in range(10): # range(10)生成0-9的数字序列
if num == 3:
continue # 跳过当前迭代,不执行后续代码
if num == 7:
break # 终止整个循环
print(num) # 输出:0 1 2 4 5 6
4. 函数定义
定义简单函数
def add(a, b):
"""计算两个数的和
参数:
a: 第一个数字
b: 第二个数字
返回:
两数之和
"""
return a + b
调用函数
result = add(3, 5) # 位置参数传递
print(f"3 + 5 = {result}") # 输出:3 + 5 = 8
默认参数示例
def greet(name="Guest"):
"""打招呼函数
参数:
name: 名字,默认值为"Guest"
"""
print(f"Hello, {name}!")
greet() # 使用默认参数,输出: Hello, Guest!
greet("Alice") # 传入指定参数,输出: Hello, Alice!
可变参数
def calculate_sum(*numbers):
"""计算任意数量数字的和
参数:
*numbers: 可变数量的参数,被打包为元组
"""
total = 0
for num in numbers:
total += num
return total
print(calculate_sum(1, 2, 3, 4, 5)) # 输出:15
5. 数据结构操作
列表(List)操作
numbers = [1, 3, 5, 7, 9] # 创建列表
numbers.append(11) # 在末尾添加元素,变为[1,3,5,7,9,11]
numbers.insert(2, 4) # 在索引2处插入4,变为[1,3,4,5,7,9,11]
print(numbers[1:4]) # 切片操作,输出子列表: [3,4,5]
numbers.remove(5) # 删除第一个出现的5,变为[1,3,4,7,9,11]
popped = numbers.pop() # 移除并返回最后一个元素(11),列表变为[1,3,4,7,9]
字典(Dictionary)操作
person = {"name": "Bob", "age": 25, "city": "New York"} # 创建字典
person["job"] = "Engineer" # 添加新键值对,变为{"name":"Bob",...,"job":"Engineer"}
print(person["age"]) # 获取值,输出: 25
print(person.get("email", "N/A")) # 安全获取,不存在返回默认值"N/A"
集合(Set)操作
fruits_set = {"apple", "banana", "cherry"} # 创建集合(无序不重复)
fruits_set.add("orange") # 添加元素
fruits_set.discard("banana") # 移除元素
print(fruits_set.union({"grape", "pear"})) # 集合并集,输出: {'apple','cherry','orange','grape','pear'}
6. 文件操作
写入文件
with open("test.txt", "w", encoding="utf-8") as f: # 使用with语句自动关闭文件
f.write("Hello, World!\n") # 写入第一行
f.write("这是一个测试文件。\n") # 写入第二行
f.write("Python文件操作示例。") # 写入第三行
读取文件
with open("test.txt", "r", encoding="utf-8") as f:
content = f.read() # 读取全部内容为一个字符串
print(content) # 输出文件全部内容
f.seek(0) # 重置文件指针到开头
for line_num, line in enumerate(f, 1): # 逐行读取
print(f"第{line_num}行: {line.strip()}") # strip()去除换行符和空格
文件操作模式
# "r" - 读取模式(默认)
# "w" - 写入模式(会覆盖已有内容)
# "a" - 追加模式(在文件末尾添加内容)
# "r+" - 读写模式(文件指针在开头)
# "w+" - 读写模式(会覆盖已有内容)
# "a+" - 读写模式(文件指针在末尾)
# "b" - 二进制模式(如"rb"或"wb")
7. 异常处理
基本异常处理
try:
num = int(input("请输入一个数字: ")) # 可能引发ValueError
result = 10 / num # 可能引发ZeroDivisionError
except ValueError as ve:
print(f"输入错误: {ve}") # 处理输入非数字的情况
except ZeroDivisionError:
print("不能除以零!") # 处理除以零的情况
except Exception as e: # 捕获所有其他异常
print(f"发生未知错误: {type(e).__name__}")
else:
print(f"计算结果: {result}") # 没有异常时执行
finally:
print("程序执行完毕") # 无论是否异常都会执行
自定义异常
class MyError(Exception):
"""自定义异常类"""
def __init__(self, message):
self.message = message
def __str__(self):
return f"自定义错误: {self.message}"
try:
raise MyError("发生了一些问题") # 主动抛出异常
except MyError as e:
print(e) # 输出: 自定义错误: 发生了一些问题
8. 类与对象
基本类定义
class Person:
"""人类类"""
species = "人类" # 类属性,所有实例共享
def __init__(self, name, age):
"""初始化方法"""
self.name = name # 实例属性
self.age = age
def greet(self):
"""实例方法"""
print(f"你好,我是{self.name},今年{self.age}岁。")
@classmethod
def get_species(cls):
"""类方法"""
return cls.species
创建和使用对象
p1 = Person("Alice", 30) # 创建Person实例
p1.greet() # 调用实例方法,输出: 你好,我是Alice,今年30岁。
# 访问类属性和方法
print(Person.species) # 输出: 人类
print(Person.get_species()) # 输出: 人类
继承示例
class Student(Person):
"""学生类,继承自Person"""
def __init__(self, name, age, grade):
super().__init__(name, age) # 调用父类初始化方法
self.grade = grade # 新增属性
def study(self):
"""新增方法"""
print(f"{self.name}正在学习,成绩为{self.grade}")
def greet(self):
"""重写父类方法"""
print(f"我是学生{self.name},今年{self.age}岁,成绩{self.grade}")
s1 = Student("Bob", 20, "A")
s1.study() # 输出: Bob正在学习,成绩为A
s1.greet() # 输出: 我是学生Bob,今年20岁,成绩A