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()
posted @ 2026-01-17 23:52  臧博涛  阅读(5)  评论(0)    收藏  举报