Python入门三部曲:字典、函数和异常处理
大家好!今天我们要聊Python中的三个重要概念:字典、函数和异常处理。
如果你觉得这些名词听起来像天书,别慌!看完这篇文章,你会发现它们其实就像:
-
字典 = 你手机的通讯录(找张三直接打电话,不用翻遍所有联系人)
-
函数 = 冰箱里的速冻水饺(饿的时候煮一包,不用每次都从和面开始)
-
异常处理 = 给代码穿上“防弹衣”(就算出错了也不会当场爆炸)
是不是瞬间亲切多了?那咱们开始吧!
第一部分:字典——Python里的“万能通讯录”
1.1 什么是字典?
先来看一个生活场景:
你妈让你去买菜:“土豆3斤,西红柿2斤,鸡蛋1盒”
如果用Python列表来记录:
python
shopping_list = ["土豆", 3, "西红柿", 2, "鸡蛋", 1] # 问题来了:哪个是商品?哪个是数量?完全分不清!
如果用字典来记录:
python
shopping_dict = {"土豆": 3, "西红柿": 2, "鸡蛋": 1}
# 一目了然:商品 ➔ 数量,清清楚楚!
字典的格式就是:{键: 值, 键: 值, ...}
键(key)就像是标签,值(value)就是内容。通过标签就能快速找到内容。
1.2 字典的增删改查
咱们创建一个游戏角色字典:
python
# 创建一个角色
hero = {
"name": "剑圣",
"level": 10,
"hp": 100,
"skills": ["旋风斩", "致命一击"]
}
print(hero["name"]) # 输出:剑圣
查:通过键来获取值
python
print(hero["level"]) # 输出:10
print(hero.get("mp", 0)) # 更安全的方式,如果没有"mp"键,返回0
增:添加新的键值对
python
hero["mp"] = 50 # 增加魔法值 print(hero) # 现在多了 "mp": 50
改:修改已有的值
python
hero["level"] = 11 # 升级啦! print(hero["level"]) # 输出:11
删:删除某个键值对
python
del hero["mp"] # 删除魔法值
# 或者
hero.pop("hp", None) # 删除生命值,如果不存在就返回None
1.3 字典的常用操作
python
# 遍历字典的所有键值对
for key, value in hero.items():
print(f"{key}: {value}")
# 只获取所有键
for key in hero.keys():
print(key)
# 只获取所有值
for value in hero.values():
print(value)
# 检查键是否存在
if "name" in hero:
print("这个英雄有名字!")
小幽默时间:
字典就像你女朋友的购物车——想找什么直接搜关键词,别一个一个翻,会被骂的!🙈
第二部分:函数——你的代码“懒人包”
2.1 为什么要用函数?
想象一下这个场景:
你要计算三次圆的面积,每次都写
3.14 * r * r,写了三遍。
更惨的是,突然发现π应该用3.14159,你得把三处都改一遍!
这就是没有函数的痛苦。
有了函数,你只需要:
python
def circle_area(r):
"""计算圆的面积"""
pi = 3.14159
return pi * r * r
# 使用三次
area1 = circle_area(5)
area2 = circle_area(10)
area3 = circle_area(2.5)
如果要改π值,只需要改函数内部一行代码!
2.2 函数的定义和调用
python
def greet(name):
"""打招呼函数"""
return f"你好,{name}!今天也要写代码吗?"
# 调用函数
message = greet("小明")
print(message) # 输出:你好,小明!今天也要写代码吗?
语法拆解:
-
def:告诉Python,我要定义一个函数啦! -
greet:函数名,自己起(见名知意就行) -
(name):参数,就像函数的“输入” -
return:返回值,就像函数的“输出” -
函数体:缩进的代码块,就是函数要干的事情
2.3 参数的各种玩法
1. 默认参数(给参数提前设好值)
python
def make_coffee(coffee_type="美式"):
return f"给您一杯{coffee_type}咖啡"
print(make_coffee()) # 输出:给您一杯美式咖啡
print(make_coffee("拿铁")) # 输出:给您一杯拿铁咖啡
2. 关键字参数(调用时指定参数名)
python
def introduce(name, age, city):
return f"{name}今年{age}岁,来自{city}"
# 可以不按顺序传参
print(introduce(city="北京", name="小红", age=18))
3. 可变参数(不知道会传几个参数)
python
def sum_all(*numbers):
"""计算任意多个数的和"""
return sum(numbers)
print(sum_all(1, 2, 3)) # 输出:6
print(sum_all(10, 20, 30, 40)) # 输出:100
2.4 作用域——变量也有“地盘”
python
x = 10 # 全局变量
def test():
y = 20 # 局部变量,只能在函数内部用
global x # 声明要用全局的x
x = 30 # 修改全局变量
test()
print(x) # 输出:30
# print(y) # 报错!y在函数外面访问不到
小幽默时间:
函数就像你妈——你需要什么跟她说(传参数),她给你结果(返回值),但她的私房钱(局部变量)你是找不到的!🤣
第三部分:异常处理——给代码穿上“防弹衣”
3.1 没有异常处理的惨状
先看一个“脆弱的代码”:
python
num = int(input("请输入一个数字:"))
result = 10 / num
print(f"10除以{num}等于{result}")
如果用户输入:
-
2:完美运行 -
0:ZeroDivisionError— 除以0了,程序崩溃! -
abc:ValueError— 无法转换成数字,程序崩溃!
用户一个不小心,你的程序就挂了。这就像盖房子没装避雷针——打雷就塌!
3.2 try-except——拯救代码的神器
python
try:
num = int(input("请输入一个数字:"))
result = 10 / num
print(f"10除以{num}等于{result}")
except ValueError:
print("错误:请输入一个数字,不是文字!")
except ZeroDivisionError:
print("错误:不能除以0!数学老师会生气的!")
except Exception as e:
print(f"未知错误:{e}")
现在无论用户怎么作死,程序都不会崩溃,会友好地提示错误!
3.3 异常处理的完整结构
python
try:
# 可能会出错的代码
file = open("data.txt", "r")
content = file.read()
number = int(content)
result = 100 / number
except FileNotFoundError:
print("文件没找到,请检查文件名")
except ValueError:
print("文件内容不是数字")
except ZeroDivisionError:
print("数字不能是0")
else:
# 没有异常时执行
print(f"计算结果是:{result}")
finally:
# 无论有没有异常都会执行
print("程序执行完毕")
if 'file' in locals():
file.close() # 确保文件被关闭
各个部分的作用:
-
try:放有风险的代码 -
except:捕获并处理特定异常 -
else:没有异常时执行 -
finally:无论怎样都会执行(适合做清理工作)
3.4 主动抛出异常——raise
有时候我们需要主动制造“意外”:
python
def withdraw(balance, amount):
if amount > balance:
raise ValueError(f"余额不足!当前余额:{balance},想取{amount}?")
return balance - amount
try:
new_balance = withdraw(100, 200)
except ValueError as e:
print(f"取款失败:{e}")
小幽默时间:
异常处理就像给代码买了保险——平时用不上,用上的时候你就知道多香了!
用户是上帝,但上帝也经常输错密码啊!👼
第四部分:三个概念结合起来——做个简单的“学生成绩管理系统”
让我们把字典、函数、异常处理结合起来,做个好玩的小程序:
python
def show_menu():
"""显示菜单"""
print("\n=== 学生成绩管理系统 ===")
print("1. 添加学生")
print("2. 查看学生")
print("3. 修改成绩")
print("4. 删除学生")
print("5. 退出")
print("=======================")
def add_student(students):
"""添加学生"""
try:
name = input("请输入学生姓名:").strip()
if not name:
raise ValueError("姓名不能为空!")
score = float(input("请输入成绩:"))
if score < 0 or score > 100:
raise ValueError("成绩应该在0-100之间!")
students[name] = score
print(f"✅ 成功添加学生:{name},成绩:{score}")
except ValueError as e:
print(f"❌ 添加失败:{e}")
def show_students(students):
"""查看所有学生"""
if not students:
print("📭 暂无学生数据")
return
print("\n学生名单:")
print("-" * 30)
for name, score in students.items():
# 根据成绩给出评价
if score >= 90:
grade = "优秀"
elif score >= 60:
grade = "及格"
else:
grade = "不及格"
print(f"{name}:{score}分 ({grade})")
print("-" * 30)
print(f"共 {len(students)} 名学生")
def update_score(students):
"""修改成绩"""
name = input("请输入要修改的学生姓名:")
if name not in students:
print(f"❌ 学生 {name} 不存在!")
return
try:
new_score = float(input("请输入新成绩:"))
if new_score < 0 or new_score > 100:
raise ValueError("成绩应该在0-100之间!")
students[name] = new_score
print(f"✅ 已将 {name} 的成绩修改为 {new_score}")
except ValueError as e:
print(f"❌ 修改失败:{e}")
def delete_student(students):
"""删除学生"""
name = input("请输入要删除的学生姓名:")
if name not in students:
print(f"❌ 学生 {name} 不存在!")
return
confirm = input(f"确定要删除 {name} 吗?(y/n):")
if confirm.lower() == 'y':
del students[name]
print(f"✅ 已删除学生:{name}")
else:
print("已取消删除")
def main():
"""主程序"""
students = {} # 用字典存储学生信息
print("🎉 欢迎使用学生成绩管理系统!")
while True:
show_menu()
choice = input("请选择操作:")
if choice == '1':
add_student(students)
elif choice == '2':
show_students(students)
elif choice == '3':
update_score(students)
elif choice == '4':
delete_student(students)
elif choice == '5':
print("👋 谢谢使用,再见!")
break
else:
print("❌ 无效选择,请输入1-5!")
input("\n按回车键继续...") # 暂停一下
# 启动程序
if __name__ == "__main__":
main()
这个例子涵盖了:
-
✅ 字典:存储学生姓名和成绩
-
✅ 函数:每个功能独立封装
-
✅ 异常处理:处理输入错误、成绩范围等
总结
今天我们学习了Python三个重要的概念:
| 概念 | 核心作用 | 记忆口诀 |
|---|---|---|
| 字典 | 键值对存储,快速查找 | 查字典,找标签,键找值,真方便 |
| 函数 | 代码封装,重复使用 | 定义用def,调用写名字,参数往里传,return返回值 |
| 异常处理 | 错误捕获,程序不崩 | try里试水,except兜底,finally善后 |
更多推荐



所有评论(0)