目录
[1.1 函数的基本概念详解](#1.1 函数的基本概念详解)
[1.2 为什么函数如此重要?](#1.2 为什么函数如此重要?)
[1.3 函数的四大优势](#1.3 函数的四大优势)
[2.1 函数定义的完整语法结构](#2.1 函数定义的完整语法结构)
[2.2 函数定义的实际示例](#2.2 函数定义的实际示例)
[2.3 函数定义的注意事项](#2.3 函数定义的注意事项)
[3.1 函数调用的基本原理](#3.1 函数调用的基本原理)
[3.2 不同类型的函数调用](#3.2 不同类型的函数调用)
[3.3 函数调用的实际场景](#3.3 函数调用的实际场景)
[4.1 return语句的详细解析](#4.1 return语句的详细解析)
[4.2 各种return情况的示例](#4.2 各种return情况的示例)
[4.3 return语句的特殊用法](#4.3 return语句的特殊用法)
[5.1 实战项目一:个人日记管理系统](#5.1 实战项目一:个人日记管理系统)
[5.2 实战项目二:简易银行账户系统](#5.2 实战项目二:简易银行账户系统)
[6.1 编写高质量函数的指导原则](#6.1 编写高质量函数的指导原则)
[6.2 文档字符串和注释的规范](#6.2 文档字符串和注释的规范)
[6.3 错误处理和输入验证](#6.3 错误处理和输入验证)
嘿,朋友们!👋
我是你们的学习伙伴,一个热爱编程、喜欢把复杂技术讲简单的普通开发者。在写这些教程的时候,我总是在想:怎么才能让你们学得更轻松、更有趣呢?
如果你觉得我的讲解方式对你有帮助,或者喜欢我这种"不装高深、只说人话"的风格,欢迎来我的小窝坐坐~
我的技术博客 :python全栈蛇行者-CSDN博客那里有更多精心整理的学习笔记、实战项目,还有我在学习中踩过的坑和总结的经验。
专栏订阅也不容错过哦!我会持续更新这个Python全栈系列,从基础到实战,手把手带你走进编程的世界。订阅之后,新文章会第一时间推送到你面前,再也不用担心错过精彩内容啦!
好啦,唠叨完毕,让我们开始今天的学习吧!
一、什么是函数?------深入理解函数的概念
1.1 函数的基本概念详解
函数是编程中最重要的概念之一,它是组织代码的基本单元。让我们用一个更加生活化的方式来理解函数。
想象一下日常生活中的场景:
-
咖啡机:你只需要按下按钮,咖啡机就会自动完成磨豆、加热、冲泡等一系列复杂操作,最终给你一杯香浓的咖啡。你不需要知道内部如何工作,只需要知道按哪个按钮得到什么结果。
-
快递服务:你告诉快递员收件地址和寄件地址,快递员就会完成取件、运输、派送的整个过程。你不需要关心具体走哪条路线、用什么交通工具。
在编程中,函数就是这样的"黑盒子":
-
输入 → 处理 → 输出
-
你只需要知道给函数什么(输入),它会返回什么(输出)
-
不需要关心函数内部是如何实现的
1.2 为什么函数如此重要?
让我们通过对比来理解函数的价值:
没有函数的情况:
python
# 计算三个圆的面积,没有使用函数
radius1 = 5
area1 = 3.14 * radius1 * radius1
print(f"半径{radius1}的圆面积是: {area1}")
radius2 = 8
area2 = 3.14 * radius2 * radius2
print(f"半径{radius2}的圆面积是: {area2}")
radius3 = 10
area3 = 3.14 * radius3 * radius3
print(f"半径{radius3}的圆面积是: {area3}")
使用函数的情况:
python
def calculate_circle_area(radius):
"""计算圆的面积"""
area = 3.14 * radius * radius
return area
# 计算三个圆的面积,使用函数
print(f"半径5的圆面积是: {calculate_circle_area(5)}")
print(f"半径8的圆面积是: {calculate_circle_area(8)}")
print(f"半径10的圆面积是: {calculate_circle_area(10)}")
对比分析:
-
代码重复:没有函数的代码重复了计算公式
-
维护困难:如果要修改计算公式,需要修改多处
-
可读性差:没有函数的代码意图不够明确
-
错误风险:重复代码增加了出错的可能性
1.3 函数的四大优势
1. 代码重用(Reusability)
-
一次定义,多次使用
-
避免重复编写相同代码
-
提高开发效率
2. 模块化(Modularity)
-
将复杂问题分解为小问题
-
每个函数解决一个特定问题
-
便于团队协作开发
3. 可维护性(Maintainability)
-
修改只需在一处进行
-
不影响其他部分的代码
-
降低维护成本
4. 可读性(Readability)
-
有意义的函数名让代码自文档化
-
隐藏实现细节,突出业务逻辑
-
便于其他人理解和维护
二、定义函数------从零开始创建函数
2.1 函数定义的完整语法结构
python
def 函数名(参数列表):
"""文档字符串(描述函数功能)"""
函数体代码块
return 返回值
让我们详细分解每个部分:
def关键字
-
必须的关键字,告诉Python"我要定义一个函数"
-
类似于说"我要创建一个新的工具"
函数名
-
函数的名称,要遵循标识符命名规则
-
应该使用小写字母,单词间用下划线分隔
-
要有描述性,让人一看就知道函数做什么
-
好的例子:
calculate_area
,get_user_info
-
不好的例子:
func1
,abc
,do_something
括号和参数
-
括号是必须的,即使没有参数也要写空括号
-
参数是函数的输入,今天我们先学习无参数函数
冒号
-
非常重要的符号,表示函数定义的开始
-
忘记冒号是初学者常见错误
文档字符串
-
用三引号包围的字符串,描述函数功能
-
不是必须的,但强烈推荐使用
-
可以通过
函数名.__doc__
访问
函数体
-
缩进的代码块,实现函数的具体功能
-
Python使用缩进来标识代码块,通常用4个空格
return语句
-
用于返回函数的结果
-
不是必须的,没有return的函数返回None
-
遇到return语句,函数立即结束执行
2.2 函数定义的实际示例
让我们通过多个例子来深入理解函数定义:
示例1:最简单的函数
python
def say_hello():
"""这个函数用于向世界打招呼"""
print("Hello, World!")
print("欢迎来到Python编程世界!")
示例2:执行特定任务的函数
python
def show_current_time():
"""显示当前时间信息(模拟)"""
print("当前时间:2024年1月1日 10:30:00")
print("今天是星期一")
print("天气:晴朗")
示例3:计算型函数
python
def calculate_rectangle_area():
"""计算矩形的面积(使用固定值)"""
length = 10
width = 5
area = length * width
print(f"长为{length},宽为{width}的矩形面积是:{area}")
return area
示例4:返回多个值的函数
python
def get_student_info():
"""返回学生信息"""
name = "张三"
age = 18
grade = "三年级"
score = 95.5
return name, age, grade, score
2.3 函数定义的注意事项
1. 命名规范
python
# 好的命名
def calculate_total_price():
def get_user_name():
def validate_email_format():
# 不好的命名
def func1():
def abc():
def do_it():
2. 文档字符串的重要性
python
def process_data():
"""
处理用户数据
这个函数执行以下操作:
1. 读取数据文件
2. 清洗数据
3. 计算统计信息
4. 生成报告
返回:
dict: 包含处理结果的字典
"""
# 函数实现...
pass
3. 代码缩进
python
# 正确的缩进
def correct_function():
print("这一行有4个空格的缩进")
print("这一行也有4个空格的缩进")
# 错误的缩进(会导致错误)
def wrong_function():
print("这一行没有缩进") # 这会报错!
print("这一行有缩进")
三、调用函数------让函数真正工作起来
3.1 函数调用的基本原理
函数定义只是创建了函数,就像买了一台咖啡机放在厨房里。只有当你按下按钮(调用函数)时,咖啡机才会开始工作。
调用函数的语法:
函数名()
调用过程详解:
-
Python找到函数定义
-
跳转到函数体的第一行代码
-
按顺序执行函数体内的所有语句
-
遇到return语句或函数体结束,返回到调用位置
-
继续执行调用位置后面的代码
3.2 不同类型的函数调用
1. 调用无返回值的函数
python
def display_welcome_message():
"""显示欢迎信息"""
print("🌟" * 30)
print(" 欢迎使用学生管理系统")
print("🌟" * 30)
print("请选择您要执行的操作:")
print("1. 添加学生")
print("2. 查询学生")
print("3. 删除学生")
# 调用函数
display_welcome_message()
2. 调用有返回值的函数
python
def get_pi_value():
"""返回圆周率的近似值"""
return 3.1415926
# 方式1:直接使用返回值
print(f"圆周率的值是: {get_pi_value()}")
# 方式2:保存返回值到变量
pi = get_pi_value()
print(f"使用变量存储的圆周率: {pi}")
# 方式3:在表达式中使用返回值
circle_length = 2 * get_pi_value() * 5
print(f"半径为5的圆周长: {circle_length}")
3. 调用返回多个值的函数
python
def get_system_info():
"""返回系统信息"""
os_name = "Windows 10"
version = "21H2"
architecture = "64位"
return os_name, version, architecture
# 接收多个返回值
os, ver, arch = get_system_info()
print(f"操作系统: {os}")
print(f"版本: {ver}")
print(f"架构: {arch}")
# 也可以用一个变量接收(得到元组)
all_info = get_system_info()
print(f"所有信息: {all_info}")
3.3 函数调用的实际场景
场景1:组织程序流程
python
def initialize_system():
"""初始化系统"""
print("正在加载配置文件...")
print("正在连接数据库...")
print("系统初始化完成!")
def load_user_data():
"""加载用户数据"""
print("正在读取用户信息...")
print("用户数据加载完成!")
return ["用户1", "用户2", "用户3"]
def show_main_interface():
"""显示主界面"""
print("\n=== 主界面 ===")
print("1. 用户管理")
print("2. 数据统计")
print("3. 系统设置")
# 组织程序执行流程
print("程序启动中...")
initialize_system()
users = load_user_data()
show_main_interface()
print(f"当前在线用户: {len(users)}人")
场景2:重复执行相同任务
python
def print_separator():
"""打印分隔线"""
print("-" * 50)
def show_section_header(title):
"""显示章节标题"""
print_separator()
print(f" {title}")
print_separator()
# 在多个地方使用相同的格式
show_section_header("个人信息")
print("姓名: 张三")
print("年龄: 25")
show_section_header("教育背景")
print("学校: 某某大学")
print("专业: 计算机科学")
show_section_header("工作经历")
print("公司: 科技公司")
print("职位: 软件工程师")
四、函数的返回值------理解函数的输出机制
4.1 return语句的详细解析
return语句是函数与外部世界沟通的桥梁,它决定了函数执行后会产生什么结果。
return语句的作用:
-
结束函数的执行
-
返回一个值给调用者
-
没有return或return后面没有值,函数返回None
4.2 各种return情况的示例
情况1:没有return语句
python
def no_return_function():
"""这个函数没有return语句"""
print("这个函数会执行打印操作")
# 函数执行完自动返回None
result = no_return_function()
print(f"没有return的函数的返回值: {result}") # 输出: None
print(f"返回值类型: {type(result)}") # 输出: <class 'NoneType'>
情况2:有return但没有值
python
def empty_return_function():
"""这个函数有return但没有返回值"""
print("执行一些操作...")
return # 相当于 return None
result = empty_return_function()
print(f"空return的函数的返回值: {result}") # 输出: None
情况3:返回单个值
python
def get_current_temperature():
"""返回当前温度(模拟)"""
return 25.5
temperature = get_current_temperature()
print(f"当前温度: {temperature}°C")
情况4:返回多个值(实际上是返回元组)
python
def analyze_numbers(numbers):
"""分析数字列表,返回统计信息"""
if not numbers:
return 0, 0, 0 # 如果列表为空,返回默认值
total = sum(numbers)
average = total / len(numbers)
maximum = max(numbers)
return total, average, maximum
# 使用函数
scores = [85, 92, 78, 96, 88]
total_score, avg_score, max_score = analyze_numbers(scores)
print(f"总分: {total_score}")
print(f"平均分: {avg_score:.2f}")
print(f"最高分: {max_score}")
4.3 return语句的特殊用法
提前返回(Early Return)
python
def check_eligibility(age, has_id):
"""检查是否具备资格"""
# 如果年龄不够,立即返回
if age < 18:
return "年龄不符合要求"
# 如果没有身份证,立即返回
if not has_id:
return "需要提供身份证"
# 所有条件都满足
return "符合资格,可以继续"
# 测试
print(check_eligibility(16, True)) # 输出: 年龄不符合要求
print(check_eligibility(20, False)) # 输出: 需要提供身份证
print(check_eligibility(20, True)) # 输出: 符合资格,可以继续
条件返回
python
def get_grade_level(score):
"""根据分数返回等级"""
if score >= 90:
return "优秀"
elif score >= 80:
return "良好"
elif score >= 70:
return "中等"
elif score >= 60:
return "及格"
else:
return "不及格"
# 使用
score = 85
level = get_grade_level(score)
print(f"分数{score}对应的等级是: {level}")
五、实战演示------综合应用案例
5.1 实战项目一:个人日记管理系统
让我们创建一个完整的日记管理系统,展示函数在实际项目中的应用:
python
# 个人日记管理系统
def display_system_header():
"""
显示系统标题和欢迎信息
"""
print("📖" * 40)
print(" 个人日记管理系统")
print("📖" * 40)
print("记录生活点滴,珍藏美好回忆")
def show_main_menu():
"""
显示主菜单选项
"""
print("\n" + "=" * 50)
print("请选择操作:")
print("1. 写新日记")
print("2. 查看日记列表")
print("3. 阅读日记")
print("4. 系统信息")
print("5. 退出系统")
print("=" * 50)
def create_new_diary():
"""
创建新日记
"""
print("\n🎨 开始写新日记...")
# 获取日记信息
title = input("请输入日记标题: ")
weather = input("请输入天气: ")
mood = input("请输入心情: ")
print("\n请输入日记内容(输入'END'结束):")
content_lines = []
while True:
line = input()
if line.upper() == 'END':
break
content_lines.append(line)
content = '\n'.join(content_lines)
# 创建日记对象
diary = {
'title': title,
'weather': weather,
'mood': mood,
'content': content,
'create_time': '2024-01-01 10:00:00' # 模拟时间
}
print(f"\n✅ 日记 '{title}' 保存成功!")
return diary
def display_diary_list(diaries):
"""
显示日记列表
"""
if not diaries:
print("\n📭 还没有日记,快去写一篇吧!")
return
print(f"\n📚 我的日记本(共{len(diaries)}篇)")
print("-" * 60)
for i, diary in enumerate(diaries, 1):
print(f"{i}. {diary['title']} - {diary['create_time']}")
print(f" 天气: {diary['weather']} | 心情: {diary['mood']}")
def read_diary_detail(diary):
"""
阅读日记详情
"""
print("\n" + "📄" * 30)
print(f"标题: {diary['title']}")
print(f"时间: {diary['create_time']}")
print(f"天气: {diary['weather']}")
print(f"心情: {diary['mood']}")
print("-" * 40)
print("内容:")
print(diary['content'])
print("📄" * 30)
def show_system_info():
"""
显示系统信息
"""
print("\n" + "ℹ️ " * 15)
print("系统信息:")
print("版本: v1.0")
print("作者: Python学习者")
print("功能: 日记的创建、查看、管理")
print("特点: 简单易用,保护隐私")
print("ℹ️ " * 15)
def run_diary_system():
"""
日记管理系统主函数
"""
diaries = [] # 存储所有日记
# 显示欢迎信息
display_system_header()
# 主循环
while True:
show_main_menu()
choice = input("\n请输入您的选择 (1-5): ").strip()
if choice == '1':
# 写新日记
new_diary = create_new_diary()
diaries.append(new_diary)
elif choice == '2':
# 查看日记列表
display_diary_list(diaries)
elif choice == '3':
# 阅读日记
if not diaries:
print("\n📭 还没有日记,无法阅读!")
continue
display_diary_list(diaries)
try:
diary_index = int(input("\n请选择要阅读的日记编号: ")) - 1
if 0 <= diary_index < len(diaries):
read_diary_detail(diaries[diary_index])
else:
print("❌ 编号无效!")
except ValueError:
print("❌ 请输入有效的数字!")
elif choice == '4':
# 显示系统信息
show_system_info()
elif choice == '5':
# 退出系统
print("\n感谢使用个人日记管理系统!")
print("再见!👋")
break
else:
print("❌ 无效的选择,请重新输入!")
# 启动系统
if __name__ == "__main__":
run_diary_system()
5.2 实战项目二:简易银行账户系统
python
# 简易银行账户系统
def display_bank_header():
"""
显示银行系统标题
"""
print("🏦" * 35)
print(" 简易银行账户系统")
print("🏦" * 35)
def show_bank_menu():
"""
显示银行菜单
"""
print("\n请选择操作:")
print("1. 开户")
print("2. 存款")
print("3. 取款")
print("4. 查询余额")
print("5. 查看交易记录")
print("6. 退出系统")
def create_account(accounts):
"""
创建新账户
"""
print("\n=== 开户流程 ===")
account_name = input("请输入账户名称: ")
initial_deposit = float(input("请输入初始存款金额: "))
# 生成账户ID(简单模拟)
account_id = f"ACC{len(accounts) + 1:04d}"
# 创建账户信息
account = {
'id': account_id,
'name': account_name,
'balance': initial_deposit,
'transactions': [
f"开户存入: {initial_deposit:.2f}元"
]
}
accounts[account_id] = account
print(f"\n✅ 开户成功!")
print(f"账户ID: {account_id}")
print(f"账户名: {account_name}")
print(f"初始余额: {initial_deposit:.2f}元")
return account_id
def deposit_money(accounts):
"""
存款操作
"""
print("\n=== 存款操作 ===")
if not accounts:
print("❌ 还没有任何账户,请先开户!")
return
account_id = input("请输入账户ID: ")
if account_id not in accounts:
print("❌ 账户不存在!")
return
amount = float(input("请输入存款金额: "))
if amount <= 0:
print("❌ 存款金额必须大于0!")
return
# 更新余额和交易记录
accounts[account_id]['balance'] += amount
accounts[account_id]['transactions'].append(f"存款: +{amount:.2f}元")
print(f"\n✅ 存款成功!")
print(f"存入金额: {amount:.2f}元")
print(f"当前余额: {accounts[account_id]['balance']:.2f}元")
def withdraw_money(accounts):
"""
取款操作
"""
print("\n=== 取款操作 ===")
if not accounts:
print("❌ 还没有任何账户,请先开户!")
return
account_id = input("请输入账户ID: ")
if account_id not in accounts:
print("❌ 账户不存在!")
return
amount = float(input("请输入取款金额: "))
if amount <= 0:
print("❌ 取款金额必须大于0!")
return
if amount > accounts[account_id]['balance']:
print("❌ 余额不足!")
return
# 更新余额和交易记录
accounts[account_id]['balance'] -= amount
accounts[account_id]['transactions'].append(f"取款: -{amount:.2f}元")
print(f"\n✅ 取款成功!")
print(f"取出金额: {amount:.2f}元")
print(f"当前余额: {accounts[account_id]['balance']:.2f}元")
def check_balance(accounts):
"""
查询余额
"""
print("\n=== 余额查询 ===")
if not accounts:
print("❌ 还没有任何账户,请先开户!")
return
account_id = input("请输入账户ID: ")
if account_id not in accounts:
print("❌ 账户不存在!")
return
account = accounts[account_id]
print(f"\n账户信息:")
print(f"账户ID: {account['id']}")
print(f"账户名: {account['name']}")
print(f"当前余额: {account['balance']:.2f}元")
def show_transactions(accounts):
"""
显示交易记录
"""
print("\n=== 交易记录 ===")
if not accounts:
print("❌ 还没有任何账户,请先开户!")
return
account_id = input("请输入账户ID: ")
if account_id not in accounts:
print("❌ 账户不存在!")
return
account = accounts[account_id]
print(f"\n账户: {account['name']} ({account['id']})")
print("交易记录:")
print("-" * 30)
for i, transaction in enumerate(account['transactions'], 1):
print(f"{i}. {transaction}")
def run_bank_system():
"""
银行系统主函数
"""
accounts = {} # 存储所有账户
display_bank_header()
while True:
show_bank_menu()
choice = input("\n请输入您的选择 (1-6): ").strip()
if choice == '1':
create_account(accounts)
elif choice == '2':
deposit_money(accounts)
elif choice == '3':
withdraw_money(accounts)
elif choice == '4':
check_balance(accounts)
elif choice == '5':
show_transactions(accounts)
elif choice == '6':
print("\n感谢使用简易银行系统!")
print("再见!💰")
break
else:
print("❌ 无效的选择,请重新输入!")
# 启动银行系统
if __name__ == "__main__":
run_bank_system()
六、函数的最佳实践和编程习惯
6.1 编写高质量函数的指导原则
1. 单一职责原则
python
# 好的例子:每个函数只做一件事
def calculate_total_price(price, quantity):
"""计算总价格"""
return price * quantity
def apply_discount(total, discount_rate):
"""应用折扣"""
return total * (1 - discount_rate)
def format_currency(amount):
"""格式化货币显示"""
return f"¥{amount:.2f}"
# 不好的例子:一个函数做太多事情
def process_order_bad(price, quantity, discount_rate):
"""不好的设计:一个函数做太多事情"""
total = price * quantity
discounted = total * (1 - discount_rate)
formatted = f"¥{discounted:.2f}"
print(formatted)
return discounted
2. 有意义的函数名
python
# 好的命名
def calculate_monthly_salary():
def validate_user_input():
def send_email_notification():
# 不好的命名
def calc(): # 太简略
def do_thing(): # 不明确
def function1(): # 无意义
3. 适当的函数长度
python
# 好的设计:函数较短,职责明确
def process_user_registration():
"""处理用户注册流程"""
user_data = collect_user_info()
if validate_user_data(user_data):
save_user_to_database(user_data)
send_welcome_email(user_data)
return True
return False
# 每个子函数都有明确职责
def collect_user_info():
"""收集用户信息"""
# 具体实现...
def validate_user_data(data):
"""验证用户数据"""
# 具体实现...
def save_user_to_database(data):
"""保存用户到数据库"""
# 具体实现...
def send_welcome_email(data):
"""发送欢迎邮件"""
# 具体实现...
6.2 文档字符串和注释的规范
完整的文档字符串示例:
python
def calculate_compound_interest(principal, rate, time, compound_frequency):
"""
计算复利
根据本金、年利率、投资时间和复利频率计算最终金额。
参数:
principal (float): 本金金额,必须大于0
rate (float): 年利率,以小数表示(如0.05表示5%)
time (float): 投资时间,以年为单位
compound_frequency (int): 年复利次数(如12表示月复利)
返回:
float: 投资期满后的总金额
抛出:
ValueError: 如果参数不合法
示例:
>>> calculate_compound_interest(1000, 0.05, 2, 12)
1104.89
"""
# 参数验证
if principal <= 0:
raise ValueError("本金必须大于0")
if rate <= 0:
raise ValueError("利率必须大于0")
if time <= 0:
raise ValueError("投资时间必须大于0")
if compound_frequency <= 0:
raise ValueError("复利频率必须大于0")
# 计算复利
amount = principal * (1 + rate/compound_frequency) ** (compound_frequency * time)
return round(amount, 2)
6.3 错误处理和输入验证
python
def safe_divide(numerator, denominator):
"""
安全的除法运算
参数:
numerator (float): 分子
denominator (float): 分母
返回:
float: 除法结果,如果分母为0返回None
"""
# 输入验证
if not isinstance(numerator, (int, float)) or not isinstance(denominator, (int, float)):
print("错误:参数必须是数字")
return None
# 业务逻辑验证
if denominator == 0:
print("错误:分母不能为0")
return None
# 执行计算
result = numerator / denominator
return result
# 测试各种情况
print(safe_divide(10, 2)) # 正常情况
print(safe_divide(10, 0)) # 除零情况
print(safe_divide(10, "2")) # 类型错误情况
七、每日一题:简单电影管理系统
题目要求
创建一个简单的电影管理系统,要求实现以下基本功能:
系统功能需求
1. 电影信息管理
-
每部电影包含:电影名称、导演、主演、上映年份、评分、类型
-
能够添加新电影到系统
-
能够显示所有电影信息
2. 电影查询功能
-
按电影名称查询
-
按导演查询
-
按类型查询
-
显示高评分电影(评分≥8.0)
3. 电影推荐功能
-
随机推荐一部电影
-
根据类型推荐电影
技术要求
必须使用函数实现以下功能:
-
display_system_header()
- 显示系统标题和欢迎信息 -
show_main_menu()
- 显示主菜单选项 -
add_new_movie(movies)
- 添加新电影到系统 -
display_all_movies(movies)
- 显示所有电影信息 -
search_movies(movies)
- 搜索电影(按名称、导演、类型) -
show_high_rated_movies(movies)
- 显示高评分电影 -
recommend_movie(movies)
- 推荐电影功能 -
main()
- 主函数,组织整个系统流程
数据结构建议
python
# 每部电影用字典表示
movie = {
'title': '肖申克的救赎',
'director': '弗兰克·德拉邦特',
'actors': ['蒂姆·罗宾斯', '摩根·弗里曼'],
'year': 1994,
'rating': 9.7,
'genre': '剧情'
}
# 所有电影存储在列表中
movies = [movie1, movie2, movie3, ...]
界面要求
-
有清晰的菜单界面
-
用户友好的输入提示
-
美观的信息显示格式
-
适当的错误处理
示例交互
python
🎬 ================================= 🎬
简单电影管理系统
🎬 ================================= 🎬
请选择操作:
1. 添加新电影
2. 显示所有电影
3. 搜索电影
4. 显示高评分电影
5. 电影推荐
6. 退出系统
请输入您的选择 (1-6):
评分标准
基础要求(必须完成):
-
所有功能都使用函数实现
-
能够添加和显示电影
-
实现基本的搜索功能
-
有清晰的用户界面
进阶要求(加分项):
-
实现电影推荐功能
-
添加数据验证(如评分范围0-10)
-
实现电影删除或修改功能
-
添加电影收藏功能
-
将数据保存到文件
提示
-
函数设计:每个函数应该只负责一个明确的任务
-
错误处理:考虑用户输入错误的情况
-
用户体验:提供清晰的操作指引和反馈
-
代码结构:使用有意义的变量名和函数名
-
数据验证:确保输入的数据格式正确
示例电影数据(用于测试)
python
# 可以预先添加一些电影数据用于测试
sample_movies = [
{
'title': '肖申克的救赎',
'director': '弗兰克·德拉邦特',
'actors': ['蒂姆·罗宾斯', '摩根·弗里曼'],
'year': 1994,
'rating': 9.7,
'genre': '剧情'
},
{
'title': '阿甘正传',
'director': '罗伯特·泽米吉斯',
'actors': ['汤姆·汉克斯', '罗宾·怀特'],
'year': 1994,
'rating': 9.5,
'genre': '剧情'
}
]
请根据上述要求,使用今天学习的函数知识完成这个电影管理系统的开发。注意代码的结构和可读性,确保每个函数都有明确的职责!
八、结语
今天的函数之旅就到这里啦!希望这些内容能帮你把函数的迷雾拨开,看到编程的美妙之处。🎉
说实话,写教程是件挺费心思的事情------要想着怎么讲你们才容易懂,怎么写例子你们才容易练。但每次想到能帮到正在学习的你们,就觉得特别值得!
如果你觉得今天的内容对你有帮助,或者喜欢我这种"不端不装"的讲解风格:
-
博客关注走一波~那里是我的技术自留地,有更多干货等着你
-
专栏订阅也别错过!这个Python全栈系列会持续更新,从入门到实战,我陪你一起成长
学习编程就像打怪升级,有时候会卡关,有时候会迷茫,但坚持下去,你一定能看到自己的进步!有什么问题随时来博客找我,我看到都会回复的。
下篇博文见啦,继续加油!