当你第一次看到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']}")
总结
最重要的三个思维转变:
- 模块化思考:把复杂问题拆分成简单函数
- 数据驱动:用合适的数据结构组织信息
- 错误预见:提前考虑异常情况并妥善处理