Python进阶指南:掌握核心编程概念

21 阅读4分钟

当你第一次看到Python代码时,可能会觉得它像天书一样难以理解。但别担心,就像学习任何新语言一样,编程也需要从基础开始。本文将带你深入Python的核心概念,让你真正理解编程的思维方式,而不仅仅是记住语法规则。

计算机的"思考方式"

  • 顺序执行:代码从上到下逐行运行
  • 条件判断:根据不同情况执行不同操作
  • 重复执行:自动处理重复性任务

核心概念与代码实践

函数:代码的构建块

def calculate_discount(price, discount_rate=0.1):
    """
    计算商品折扣价格
    price: 原价
    discount_rate: 折扣率,默认9折
    """
    discount_amount = price * discount_rate
    final_price = price - discount_amount
    return final_price

# 使用函数
original_price = 100
discounted_price = calculate_discount(original_price)
print(f"原价{original_price}元,折后{discounted_price}元")

# 自定义折扣率
big_discount = calculate_discount(200, 0.3)  # 7折
print(f"大折扣后价格: {big_discount}元")

列表操作:数据处理的基础

# 创建学生成绩列表
grades = [85, 92, 78, 96, 88, 72]

# 常用列表操作
print(f"平均分: {sum(grades) / len(grades):.1f}")
print(f"最高分: {max(grades)}")
print(f"最低分: {min(grades)}")

# 列表排序
sorted_grades = sorted(grades)
reverse_sorted = sorted(grades, reverse=True)
print(f"升序排列: {sorted_grades}")
print(f"降序排列: {reverse_sorted}")

# 列表推导式 - Python的特色功能
passed_grades = [grade for grade in grades if grade >= 80]
print(f"及格成绩: {passed_grades}")

# 对每个成绩加5分(但不超过100)
adjusted_grades = [min(grade + 5, 100) for grade in grades]
print(f"调整后成绩: {adjusted_grades}")

字典:键值对的强大容器

# 创建学生信息字典
student = {
    "name": "王小明",
    "age": 19,
    "courses": ["数学", "英语", "编程"],
    "scores": {"数学": 90, "英语": 85, "编程": 95}
}

# 访问字典数据
print(f"学生姓名: {student['name']}")
print(f"年龄: {student.get('age', '未知')}")

# 添加新信息
student["class"] = "计算机1班"
student["hobbies"] = ["篮球", "阅读", "编程"]

# 遍历字典
print("\n学生完整信息:")
for key, value in student.items():
    print(f"{key}: {value}")

# 嵌套字典操作
print(f"\n编程成绩: {student['scores']['编程']}分")

错误处理:让程序更健壮

def safe_divide(a, b):
    """安全的除法函数,处理除零错误"""
    try:
        result = a / b
        return result
    except ZeroDivisionError:
        print("错误:除数不能为零!")
        return None
    except TypeError:
        print("错误:请输入数字!")
        return None

# 测试错误处理
print(safe_divide(10, 2))   # 正常情况
print(safe_divide(10, 0))   # 除零错误
print(safe_divide(10, "2")) # 类型错误

面向对象编程:组织代码的高级方式

class BankAccount:
    """银行账户类"""
    
    def __init__(self, account_holder, balance=0):
        self.account_holder = account_holder
        self.balance = balance
        self.transactions = []  # 交易记录
    
    def deposit(self, amount):
        """存款"""
        if amount > 0:
            self.balance += amount
            self.transactions.append(f"存款: +{amount}元")
            print(f"成功存款{amount}元")
        else:
            print("存款金额必须大于0")
    
    def withdraw(self, amount):
        """取款"""
        if amount > self.balance:
            print("余额不足")
        elif amount > 0:
            self.balance -= amount
            self.transactions.append(f"取款: -{amount}元")
            print(f"成功取款{amount}元")
        else:
            print("取款金额必须大于0")
    
    def display_info(self):
        """显示账户信息"""
        print(f"账户持有人: {self.account_holder}")
        print(f"当前余额: {self.balance}元")
        print("最近交易:")
        for transaction in self.transactions[-3:]:  # 显示最近3笔
            print(f"  {transaction}")

# 使用银行账户类
my_account = BankAccount("张三", 1000)
my_account.deposit(500)
my_account.withdraw(200)
my_account.withdraw(1500)  # 测试余额不足
my_account.display_info()

文件处理:数据的持久化存储

def save_student_data(students, filename):
    """保存学生数据到文件"""
    try:
        with open(filename, 'w', encoding='utf-8') as file:
            for student in students:
                line = f"{student['name']},{student['age']},{student['major']}\n"
                file.write(line)
        print(f"数据已保存到{filename}")
    except Exception as e:
        print(f"保存文件时出错: {e}")

def load_student_data(filename):
    """从文件加载学生数据"""
    students = []
    try:
        with open(filename, 'r', encoding='utf-8') as file:
            for line in file:
                name, age, major = line.strip().split(',')
                students.append({
                    'name': name,
                    'age': int(age),
                    'major': major
                })
        return students
    except FileNotFoundError:
        print("文件不存在,将创建新文件")
        return []
    except Exception as e:
        print(f"读取文件时出错: {e}")
        return []

# 使用文件处理功能
student_list = [
    {'name': '李华', 'age': 20, 'major': '计算机'},
    {'name': '王芳', 'age': 19, 'major': '数学'},
    {'name': '张伟', 'age': 21, 'major': '物理'}
]

save_student_data(student_list, "students.txt")
loaded_students = load_student_data("students.txt")

print("从文件加载的学生数据:")
for student in loaded_students:
    print(f"姓名: {student['name']}, 年龄: {student['age']}, 专业: {student['major']}")

总结

最重要的三个思维转变:

  • 模块化思考:把复杂问题拆分成简单函数
  • 数据驱动:用合适的数据结构组织信息
  • 错误预见:提前考虑异常情况并妥善处理