2026.1.14总结
今天主要完成python基础语法的学习,大致过了一遍
1. Python 基础语法
1.1 变量、数据类型、运算符
# 变量与数据类型
name = "Python学习" # 字符串
age = 3 # 整数
height = 1.75 # 浮点数
is_student = True # 布尔值
scores = [95, 88, 92] # 列表
person_info = {"name": "张三", "age": 20} # 字典
print(f"数据类型示例:")
print(f"name: {name}, 类型: {type(name)}")
print(f"age: {age}, 类型: {type(age)}")
print(f"height: {height}, 类型: {type(height)}")
print(f"is_student: {is_student}, 类型: {type(is_student)}")
print(f"scores: {scores}, 类型: {type(scores)}")
print(f"person_info: {person_info}, 类型: {type(person_info)}")
# 运算符
a = 10
b = 3
print(f"\n运算符示例:")
print(f"a + b = {a + b}") # 加法
print(f"a - b = {a - b}") # 减法
print(f"a * b = {a * b}") # 乘法
print(f"a / b = {a / b}") # 除法
print(f"a // b = {a // b}") # 整除
print(f"a % b = {a % b}") # 取余
print(f"a ** 2 = {a ** 2}") # 幂运算
print(f"a > b: {a > b}") # 比较运算
print(f"a == 10: {a == 10}") # 相等比较
print(f"逻辑运算: {a > 5 and b < 5}") # 逻辑运算
1.2 条件语句
# if-elif-else 语句
def check_score(score):
"""根据分数判断等级"""
if score >= 90:
return "优秀"
elif score >= 80:
return "良好"
elif score >= 60:
return "及格"
else:
return "不及格"
# 测试条件语句
scores_to_check = [95, 85, 75, 55]
print("成绩等级判断:")
for score in scores_to_check:
grade = check_score(score)
print(f"分数 {score}: {grade}")
# 嵌套条件语句
def check_eligibility(age, has_id_card):
"""检查资格"""
if age >= 18:
if has_id_card:
return "可以办理银行卡"
else:
return "需要身份证才能办理"
else:
return "未成年,不能办理"
print(f"\n资格检查:")
print(check_eligibility(20, True))
print(check_eligibility(16, True))
print(check_eligibility(25, False))
1.3 循环语句
# for 循环
print("for 循环示例:")
# 遍历列表
fruits = ["苹果", "香蕉", "橙子", "葡萄"]
print("1. 遍历列表:")
for fruit in fruits:
print(f" - 我喜欢吃{fruit}")
# 使用 range
print("\n2. 使用 range:")
for i in range(5):
print(f" 第{i+1}次循环")
# 遍历字典
student_scores = {"张三": 85, "李四": 92, "王五": 78}
print("\n3. 遍历字典:")
for name, score in student_scores.items():
print(f" {name}的分数是: {score}")
# while 循环
print("\nwhile 循环示例:")
counter = 0
while counter < 3:
print(f" counter = {counter}")
counter += 1
# break 和 continue
print("\nbreak 和 continue 示例:")
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print("遇到5时停止:")
for num in numbers:
if num == 5:
break
print(f" {num}")
print("\n跳过偶数:")
for num in numbers:
if num % 2 == 0:
continue
print(f" {num}")
1.4 函数定义与调用
# 基本函数定义
def greet(name):
"""简单的问候函数"""
return f"你好, {name}!"
# 带默认参数的函数
def power(base, exponent=2):
"""计算幂,默认指数为2"""
return base ** exponent
# 返回多个值的函数
def calculate_statistics(numbers):
"""计算统计信息"""
total = sum(numbers)
count = len(numbers)
average = total / count if count > 0 else 0
maximum = max(numbers) if numbers else None
minimum = min(numbers) if numbers else None
return total, average, maximum, minimum
# 可变参数
def sum_all(*args):
"""计算任意数量参数的和"""
return sum(args)
# 关键字参数
def print_student_info(**kwargs):
"""打印学生信息"""
for key, value in kwargs.items():
print(f"{key}: {value}")
# 测试函数
print("函数示例:")
print(greet("小明"))
print(f"\n幂计算: 3^2 = {power(3)}")
print(f"幂计算: 2^3 = {power(2, 3)}")
numbers_list = [10, 20, 30, 40, 50]
total, avg, max_val, min_val = calculate_statistics(numbers_list)
print(f"\n统计信息: 总和={total}, 平均={avg}, 最大值={max_val}, 最小值={min_val}")
print(f"\n可变参数求和: {sum_all(1, 2, 3, 4, 5)}")
print("\n关键字参数:")
print_student_info(name="张三", age=20, major="计算机科学", score=95)
📊 2. 数据结构
2.1 列表操作
# 列表基本操作
print("列表操作示例:")
# 创建列表
fruits = ["苹果", "香蕉", "橙子"]
numbers = [1, 2, 3, 4, 5]
mixed_list = [1, "hello", 3.14, True]
print(f"原始列表: {fruits}")
# 添加元素
fruits.append("葡萄")
print(f"添加后: {fruits}")
# 插入元素
fruits.insert(1, "梨")
print(f"插入后: {fruits}")
# 删除元素
removed_fruit = fruits.pop(2)
print(f"删除索引2的元素: {removed_fruit}, 剩余: {fruits}")
# 列表切片
print(f"\n列表切片:")
print(f"前3个: {fruits[:3]}")
print(f"索引1到3: {fruits[1:4]}")
print(f"每隔一个: {fruits[::2]}")
print(f"反转: {fruits[::-1]}")
# 列表推导式
print(f"\n列表推导式:")
squares = [x**2 for x in range(1, 6)]
print(f"1-5的平方: {squares}")
even_numbers = [x for x in range(1, 11) if x % 2 == 0]
print(f"1-10的偶数: {even_numbers}")
# 列表排序
scores = [88, 92, 78, 95, 85]
scores.sort(reverse=True)
print(f"\n降序排序: {scores}")
2.2 元组
# 元组操作
print("元组示例:")
# 创建元组
student_info = ("张三", 20, "计算机科学")
coordinates = (10.5, 20.3)
single_element = (42,) # 注意逗号
print(f"学生信息: {student_info}")
print(f"姓名: {student_info[0]}")
print(f"年龄: {student_info[1]}")
print(f"专业: {student_info[2]}")
# 元组解包
name, age, major = student_info
print(f"\n解包: 姓名={name}, 年龄={age}, 专业={major}")
# 元组与列表转换
numbers_list = [1, 2, 3, 4, 5]
numbers_tuple = tuple(numbers_list)
print(f"\n列表转元组: {numbers_tuple}")
# 多个返回值
def get_min_max(numbers):
return min(numbers), max(numbers)
min_val, max_val = get_min_max([10, 20, 5, 30, 15])
print(f"\n最小值和最大值: {min_val}, {max_val}")
2.3 字典
# 字典操作
print("字典操作示例:")
# 创建字典
student = {
"name": "李四",
"age": 21,
"major": "数据科学",
"grades": {"数学": 90, "编程": 95, "英语": 88}
}
print(f"学生信息: {student}")
# 访问元素
print(f"姓名: {student['name']}")
print(f"年龄: {student.get('age')}")
print(f"数学成绩: {student['grades']['数学']}")
# 添加/修改元素
student["email"] = "lisi@example.com"
student["age"] = 22
print(f"\n添加邮箱后: {student}")
# 删除元素
removed_grade = student["grades"].pop("英语")
print(f"\n删除英语成绩后: {student['grades']}")
# 遍历字典
print("\n遍历字典:")
for key, value in student.items():
print(f"{key}: {value}")
# 字典推导式
squares_dict = {x: x**2 for x in range(1, 6)}
print(f"\n字典推导式: {squares_dict}")
2.4 集合
# 集合操作
print("集合操作示例:")
# 创建集合
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
print(f"集合1: {set1}")
print(f"集合2: {set2}")
# 集合运算
print(f"\n并集: {set1 | set2}") # 或 set1.union(set2)
print(f"交集: {set1 & set2}") # 或 set1.intersection(set2)
print(f"差集: {set1 - set2}") # 在set1中但不在set2中
print(f"对称差集: {set1 ^ set2}") # 不同时在两个集合中
# 集合操作
set1.add(6)
print(f"\n添加元素后: {set1}")
set1.remove(3)
print(f"删除元素后: {set1}")
# 集合推导式
even_squares = {x**2 for x in range(1, 11) if x**2 % 2 == 0}
print(f"\n1-10的偶数的平方: {even_squares}")
2.5 字符串操作
# 字符串操作
print("字符串操作示例:")
text = "Hello, Python Programming!"
# 基本操作
print(f"原始字符串: {text}")
print(f"长度: {len(text)}")
print(f"大写: {text.upper()}")
print(f"小写: {text.lower()}")
print(f"首字母大写: {text.title()}")
print(f"替换: {text.replace('Python', 'AI')}")
# 分割和连接
words = text.split()
print(f"\n分割单词: {words}")
print(f"用'-'连接: {'-'.join(words)}")
# 切片
print(f"\n切片操作:")
print(f"前5个字符: {text[:5]}")
print(f"最后5个字符: {text[-5:]}")
print(f"每隔2个字符: {text[::2]}")
# 字符串格式化
name = "王五"
age = 25
score = 95.5
# 多种格式化方式
print(f"\n字符串格式化:")
print("1. f-string: ", f"姓名: {name}, 年龄: {age}, 分数: {score:.1f}")
print("2. format: ", "姓名: {}, 年龄: {}, 分数: {:.1f}".format(name, age, score))
print("3. %格式化: ", "姓名: %s, 年龄: %d, 分数: %.1f" % (name, age, score))
# 字符串检查
print(f"\n字符串检查:")
print(f"是否以Hello开头: {text.startswith('Hello')}")
print(f"是否以!结尾: {text.endswith('!')}")
print(f"是否包含Python: {'Python' in text}")
🎯 3. 面向对象编程
3.1 类与对象
# 类与对象
print("面向对象编程示例:")
class Student:
"""学生类"""
# 类属性
school = "AI大学"
def __init__(self, name, age, student_id):
"""初始化方法"""
self.name = name
self.age = age
self.student_id = student_id
self.courses = []
def enroll_course(self, course_name):
"""选课"""
self.courses.append(course_name)
print(f"{self.name} 选了课程: {course_name}")
def display_info(self):
"""显示学生信息"""
info = f"学生信息:\n"
info += f" 姓名: {self.name}\n"
info += f" 年龄: {self.age}\n"
info += f" 学号: {self.student_id}\n"
info += f" 学校: {self.school}\n"
info += f" 课程: {', '.join(self.courses) if self.courses else '无'}"
return info
# 创建对象
student1 = Student("张三", 20, "2023001")
student2 = Student("李四", 21, "2023002")
# 调用方法
student1.enroll_course("Python编程")
student1.enroll_course("深度学习")
student2.enroll_course("机器学习")
print("\n" + student1.display_info())
print("\n" + student2.display_info())
# 访问类属性
print(f"\n学校名称: {Student.school}")
3.2 继承
# 继承
print("\n继承示例:")
class Animal:
"""动物基类"""
def __init__(self, name, species):
self.name = name
self.species = species
def make_sound(self):
return "动物叫声"
def get_info(self):
return f"{self.name} ({self.species})"
class Dog(Animal):
"""狗类,继承自动物类"""
def __init__(self, name, breed):
super().__init__(name, "犬科")
self.breed = breed
def make_sound(self):
return "汪汪!"
def get_info(self):
base_info = super().get_info()
return f"{base_info}, 品种: {self.breed}"
class Cat(Animal):
"""猫类,继承自动物类"""
def make_sound(self):
return "喵喵!"
# 创建对象
dog = Dog("旺财", "金毛")
cat = Cat("小花", "猫科")
print(dog.get_info())
print(f"叫声: {dog.make_sound()}")
print(f"\n{cat.get_info()}")
print(f"叫声: {cat.make_sound()}")
3.3 特殊方法
# 特殊方法(魔术方法)
print("\n特殊方法示例:")
class Vector:
"""向量类,演示特殊方法"""
def __init__(self, x, y):
self.x = x
self.y = y
def __repr__(self):
"""返回对象的字符串表示"""
return f"Vector({self.x}, {self.y})"
def __str__(self):
"""用户友好的字符串表示"""
return f"({self.x}, {self.y})"
def __add__(self, other):
"""向量加法"""
return Vector(self.x + other.x, self.y + other.y)
def __sub__(self, other):
"""向量减法"""
return Vector(self.x - other.x, self.y - other.y)
def __mul__(self, scalar):
"""标量乘法"""
return Vector(self.x * scalar, self.y * scalar)
def __len__(self):
"""向量长度(维度)"""
return 2
def __eq__(self, other):
"""相等比较"""
return self.x == other.x and self.y == other.y
# 使用向量类
v1 = Vector(2, 3)
v2 = Vector(4, 5)
print(f"v1 = {v1}")
print(f"v2 = {v2}")
print(f"v1 + v2 = {v1 + v2}")
print(f"v1 - v2 = {v1 - v2}")
print(f"v1 * 3 = {v1 * 3}")
print(f"v1 的维度: {len(v1)}")
print(f"v1 == v2: {v1 == v2}")
3.4 装饰器
# 装饰器
print("\n装饰器示例:")
def timer_decorator(func):
"""计时装饰器"""
import time
def wrapper(*args, **kwargs):
start_time = time.time()
result = func(*args, **kwargs)
end_time = time.time()
print(f"函数 {func.__name__} 执行时间: {end_time - start_time:.6f}秒")
return result
return wrapper
def debug_decorator(func):
"""调试装饰器"""
def wrapper(*args, **kwargs):
print(f"\n调用函数: {func.__name__}")
print(f"参数: args={args}, kwargs={kwargs}")
result = func(*args, **kwargs)
print(f"返回值: {result}")
return result
return wrapper
# 使用装饰器
@timer_decorator
@debug_decorator
def fibonacci(n):
"""计算斐波那契数列"""
if n <= 1:
return n
a, b = 0, 1
for _ in range(2, n + 1):
a, b = b, a + b
return b
# 类装饰器
class Counter:
"""计数器装饰器类"""
def __init__(self, func):
self.func = func
self.count = 0
def __call__(self, *args, **kwargs):
self.count += 1
print(f"函数 {self.func.__name__} 被调用了 {self.count} 次")
return self.func(*args, **kwargs)
@Counter
def say_hello(name):
return f"你好, {name}!"
# 测试
print("斐波那契数列测试:")
print(f"fibonacci(10) = {fibonacci(10)}")
print("\n计数器装饰器测试:")
print(say_hello("小明"))
print(say_hello("小红"))
📁 4. 文件与异常处理
4.1 文件操作
# 文件操作
print("文件操作示例:")
import os
# 写入文件
def write_to_file(filename, content):
"""写入文件"""
try:
with open(filename, 'w', encoding='utf-8') as file:
file.write(content)
print(f"成功写入文件: {filename}")
except IOError as e:
print(f"写入文件出错: {e}")
# 读取文件
def read_from_file(filename):
"""读取文件"""
try:
with open(filename, 'r', encoding='utf-8') as file:
content = file.read()
print(f"文件内容:\n{content}")
return content
except FileNotFoundError:
print(f"文件不存在: {filename}")
return None
except IOError as e:
print(f"读取文件出错: {e}")
return None
# 追加内容
def append_to_file(filename, content):
"""追加内容到文件"""
try:
with open(filename, 'a', encoding='utf-8') as file:
file.write("\n" + content)
print(f"成功追加内容到文件: {filename}")
except IOError as e:
print(f"追加内容出错: {e}")
# 按行读取
def read_lines(filename):
"""按行读取文件"""
try:
with open(filename, 'r', encoding='utf-8') as file:
lines = file.readlines()
print(f"文件共有 {len(lines)} 行:")
for i, line in enumerate(lines, 1):
print(f"第{i}行: {line.strip()}")
return lines
except FileNotFoundError:
print(f"文件不存在: {filename}")
return None
# CSV文件操作
import csv
def write_csv(filename, data):
"""写入CSV文件"""
try:
with open(filename, 'w', newline='', encoding='utf-8') as file:
writer = csv.writer(file)
writer.writerow(['姓名', '年龄', '分数']) # 写入标题
writer.writerows(data) # 写入数据
print(f"成功写入CSV文件: {filename}")
except IOError as e:
print(f"写入CSV文件出错: {e}")
def read_csv(filename):
"""读取CSV文件"""
try:
with open(filename, 'r', encoding='utf-8') as file:
reader = csv.reader(file)
data = [row for row in reader]
print(f"CSV文件内容:")
for row in data:
print(row)
return data
except FileNotFoundError:
print(f"CSV文件不存在: {filename}")
return None
# 测试文件操作
filename = "test.txt"
csv_filename = "students.csv"
# 文本文件操作
write_to_file(filename, "这是第一行文本\n这是第二行文本")
read_from_file(filename)
append_to_file(filename, "这是追加的内容")
read_lines(filename)
# CSV文件操作
student_data = [
["张三", 20, 95],
["李四", 21, 88],
["王五", 22, 92]
]
write_csv(csv_filename, student_data)
read_csv(csv_filename)
# 清理文件
if os.path.exists(filename):
os.remove(filename)
print(f"已删除文件: {filename}")
if os.path.exists(csv_filename):
os.remove(csv_filename)
print(f"已删除文件: {csv_filename}")
4.2 异常处理
# 异常处理
print("\n异常处理示例:")
def safe_divide(a, b):
"""安全的除法运算"""
try:
result = a / b
except ZeroDivisionError:
print("错误: 除数不能为零!")
return None
except TypeError:
print("错误: 参数类型错误!")
return None
except Exception as e:
print(f"未知错误: {e}")
return None
else:
print("计算成功!")
return result
finally:
print("除法运算结束\n")
# 测试异常处理
print("测试1: 正常除法")
print(f"10 / 2 = {safe_divide(10, 2)}")
print("测试2: 除以零")
print(f"10 / 0 = {safe_divide(10, 0)}")
print("测试3: 类型错误")
print(f"10 / '2' = {safe_divide(10, '2')}")
# 自定义异常
class AgeError(Exception):
"""年龄异常"""
def __init__(self, age, message="年龄必须在0-150之间"):
self.age = age
self.message = message
super().__init__(self.message)
def __str__(self):
return f"{self.age} -> {self.message}"
def validate_age(age):
"""验证年龄"""
if not 0 <= age <= 150:
raise AgeError(age)
return True
# 测试自定义异常
print("自定义异常测试:")
ages_to_test = [25, 200, -5, 30]
for age in ages_to_test:
try:
validate_age(age)
print(f"年龄 {age}: 验证通过")
except AgeError as e:
print(f"年龄 {age}: 验证失败 - {e}")
4.3 上下文管理器
# 上下文管理器
print("\n上下文管理器示例:")
# 自定义上下文管理器
class DatabaseConnection:
"""数据库连接上下文管理器"""
def __init__(self, db_name):
self.db_name = db_name
self.connection = None
def __enter__(self):
"""进入上下文时调用"""
print(f"连接到数据库: {self.db_name}")
self.connection = f"Connection to {self.db_name}"
return self
def __exit__(self, exc_type, exc_val, exc_tb):
"""退出上下文时调用"""
print(f"断开数据库连接: {self.db_name}")
self.connection = None
if exc_type:
print(f"发生异常: {exc_type.__name__}: {exc_val}")
return True # 抑制异常
def execute_query(self, query):
"""执行查询"""
if self.connection:
print(f"执行查询: {query}")
return f"Result of: {query}"
else:
raise ConnectionError("没有数据库连接")
# 使用上下文管理器
print("数据库操作:")
with DatabaseConnection("mydb") as db:
result = db.execute_query("SELECT * FROM users")
print(f"查询结果: {result}")
# 使用 contextlib
from contextlib import contextmanager
@contextmanager
def temporary_file(filename, content):
"""创建临时文件的上下文管理器"""
print(f"创建临时文件: {filename}")
with open(filename, 'w', encoding='utf-8') as f:
f.write(content)
try:
yield filename
finally:
print(f"删除临时文件: {filename}")
import os
if os.path.exists(filename):
os.remove(filename)
print("\n临时文件操作:")
with temporary_file("temp.txt", "临时内容") as temp_file:
print(f"处理文件: {temp_file}")
with open(temp_file, 'r', encoding='utf-8') as f:
print(f"文件内容: {f.read()}")
🛠️ 5. Python 标准库
5.1 os 和 sys 模块
# os 和 sys 模块
print("os 和 sys 模块示例:")
import os
import sys
# os 模块
print("当前工作目录:", os.getcwd())
print("目录列表:", os.listdir('.'))
# 创建目录
os.makedirs("test_dir/sub_dir", exist_ok=True)
print("创建目录: test_dir/sub_dir")
# 环境变量
print("\n环境变量:")
print("PATH:", os.environ.get('PATH', '未设置'))
# sys 模块
print("\nsys 模块信息:")
print("Python 版本:", sys.version)
print("平台:", sys.platform)
print("参数列表:", sys.argv)
print("模块搜索路径:")
for path in sys.path[:3]: # 只显示前3个
print(f" {path}")
# 清理
os.rmdir("test_dir/sub_dir")
os.rmdir("test_dir")
print("已清理测试目录")
5.2 datetime 和 time
# datetime 和 time
print("\ndatetime 和 time 模块示例:")
from datetime import datetime, date, time, timedelta
import time as time_module
# 当前时间
now = datetime.now()
print(f"当前时间: {now}")
print(f"日期: {now.date()}")
print(f"时间: {now.time()}")
print(f"年: {now.year}, 月: {now.month}, 日: {now.day}")
# 格式化时间
formatted = now.strftime("%Y-%m-%d %H:%M:%S")
print(f"格式化: {formatted}")
# 时间解析
parsed_time = datetime.strptime("2024-12-17 14:30:00", "%Y-%m-%d %H:%M:%S")
print(f"解析时间: {parsed_time}")
# 时间运算
one_day = timedelta(days=1)
yesterday = now - one_day
tomorrow = now + one_day
print(f"昨天: {yesterday.strftime('%Y-%m-%d')}")
print(f"明天: {tomorrow.strftime('%Y-%m-%d')}")
# 时间戳
timestamp = now.timestamp()
print(f"时间戳: {timestamp}")
print(f"从时间戳转换: {datetime.fromtimestamp(timestamp)}")
# time 模块
print(f"\n当前时间戳: {time_module.time()}")
print(f"本地时间: {time_module.localtime()}")
time_module.sleep(0.5) # 休眠0.5秒
print("休眠0.5秒完成")
5.3 collections
# collections 模块
print("\ncollections 模块示例:")
from collections import Counter, defaultdict, deque, OrderedDict, namedtuple
# Counter - 计数器
words = ["apple", "banana", "apple", "orange", "banana", "apple"]
word_counts = Counter(words)
print("单词出现次数:", word_counts)
print("最常出现的单词:", word_counts.most_common(2))
# defaultdict - 默认字典
student_scores = defaultdict(list)
student_scores["张三"].append(85)
student_scores["张三"].append(90)
student_scores["李四"].append(78)
print("\n学生成绩:")
for student, scores in student_scores.items():
print(f"{student}: {scores}")
# deque - 双端队列
queue = deque(["A", "B", "C"])
queue.append("D") # 右侧添加
queue.appendleft("Z") # 左侧添加
print(f"\n队列: {queue}")
print(f"弹出左侧: {queue.popleft()}")
print(f"弹出右侧: {queue.pop()}")
print(f"弹出后队列: {queue}")
# namedtuple - 命名元组
Point = namedtuple("Point", ["x", "y"])
p = Point(10, 20)
print(f"\n命名元组: {p}")
print(f"x坐标: {p.x}, y坐标: {p.y}")
# OrderedDict - 有序字典
ordered_dict = OrderedDict()
ordered_dict["a"] = 1
ordered_dict["b"] = 2
ordered_dict["c"] = 3
print("\n有序字典:")
for key, value in ordered_dict.items():
print(f"{key}: {value}")
5.4 json
# json 模块
print("\njson 模块示例:")
import json
# Python 对象
data = {
"name": "张三",
"age": 20,
"courses": ["数学", "编程", "英语"],
"scores": {
"数学": 95,
"编程": 88,
"英语": 92
},
"is_student": True
}
# 转换为 JSON
json_str = json.dumps(data, ensure_ascii=False, indent=2)
print("JSON字符串:")
print(json_str)
# 保存到文件
with open("data.json", "w", encoding="utf-8") as f:
json.dump(data, f, ensure_ascii=False, indent=2)
print("已保存到 data.json")
# 从文件读取
with open("data.json", "r", encoding="utf-8") as f:
loaded_data = json.load(f)
print("\n从文件加载的数据:")
print(loaded_data)
# 清理文件
import os
if os.path.exists("data.json"):
os.remove("data.json")
print("已删除 data.json")
🎯 完整测试程序
# 综合测试程序
def main():
"""主函数,演示所有功能"""
print("=" * 50)
print("Python 编程基础完整测试")
print("=" * 50)
# 测试所有功能
print("\n1. 测试基础语法...")
test_basic_syntax()
print("\n2. 测试数据结构...")
test_data_structures()
print("\n3. 测试面向对象编程...")
test_oop()
print("\n4. 测试文件操作...")
test_file_operations()
print("\n测试完成!")
def test_basic_syntax():
"""测试基础语法"""
# 条件语句
score = 85
if score >= 90:
grade = "A"
elif score >= 80:
grade = "B"
else:
grade = "C"
print(f"分数 {score} 的等级: {grade}")
# 循环
print("1-5的平方:")
for i in range(1, 6):
print(f" {i}^2 = {i**2}")
# 函数
def factorial(n):
"""计算阶乘"""
if n <= 1:
return 1
return n * factorial(n - 1)
print(f"5的阶乘: {factorial(5)}")
def test_data_structures():
"""测试数据结构"""
# 列表推导式
even_squares = [x**2 for x in range(1, 11) if x % 2 == 0]
print(f"1-10偶数的平方: {even_squares}")
# 字典推导式
square_dict = {x: x**2 for x in range(1, 6)}
print(f"数字平方字典: {square_dict}")
# 集合操作
set_a = {1, 2, 3, 4, 5}
set_b = {4, 5, 6, 7, 8}
print(f"集合交集: {set_a & set_b}")
def test_oop():
"""测试面向对象编程"""
class Book:
def __init__(self, title, author, price):
self.title = title
self.author = author
self.price = price
def apply_discount(self, discount):
self.price *= (1 - discount)
return self.price
book = Book("Python编程", "Guido", 99.0)
new_price = book.apply_discount(0.1)
print(f"书籍: {book.title}, 折扣后价格: {new_price}")
def test_file_operations():
"""测试文件操作"""
import os
# 创建测试文件
test_content = """这是测试文件
包含多行文本
用于演示文件操作"""
with open("test.txt", "w", encoding="utf-8") as f:
f.write(test_content)
# 读取并处理
with open("test.txt", "r", encoding="utf-8") as f:
lines = f.readlines()
print(f"文件有 {len(lines)} 行:")
for i, line in enumerate(lines, 1):
print(f" 行{i}: {line.strip()}")
# 清理
os.remove("test.txt")
if __name__ == "__main__":
main()

浙公网安备 33010602011771号