黑马程序员技术交流社区
标题: Python基础知识day06函数(上) [打印本页]
作者: 小江哥 时间: 2018-8-24 01:31
标题: Python基础知识day06函数(上)
加强练习
模块的基本使⽤
学⽣管理系统
01.模块
模块是 Python 程序架构的⼀个核⼼概念
模块 就好⽐是 ⼯具包,要想使⽤这个⼯具包中的⼯具,就需要 导⼊import 这个模块每⼀个以扩展名 py 结尾的 Python 源代码⽂件都是⼀个 模块
在模块中定义的 全局变量 、 函数 都是模块能够提供给外界直接使⽤的⼯具
1.1第⼀个模块体验
步骤
新建 hm_10_分隔线模块.py
复制 hm_09_打印多条分隔线.py 中的内容,最后⼀⾏ print 代码除外
增加⼀个字符串变量
name = "⿊⻢程序员"
新建 hm_10_体验模块.py ⽂件,并且编写以下代码:
import hm_10_分隔线模块
hm_10_分隔线模块.print_line("-", 80)
print(hm_10_分隔线模块.name)
体验⼩结
可以 在⼀个 Python ⽂件 中 定义 变量 或者 函数
然后在 另外⼀个⽂件中 使⽤ import 导⼊这个模块
导⼊之后,就可以使⽤ 模块名.变量 / 模块名.函数 的⽅式,使⽤这个模块中定义的变量或者函数
模块可以让 曾经编写过的代码 ⽅便的被 复⽤!
1.2模块名也是⼀个标识符
标示符可以由 字⺟、下划线 和 数字 组成
不能以数字开头 不能与关键字重名
注意:如果在给 Python ⽂件起名时,以数字开头 是⽆法在 PyCharm 中通过导⼊这个模块的
、
02.综合应⽤—— 名⽚管理系统
系统需求
程序启动,显示名⽚管理系统欢迎界⾯,并显示功能菜单
**************************************************
欢迎使⽤【名⽚管理系统】V1.0
1.新建名⽚
2.显示全部
3.查询名⽚
0. 退出系统
**************************************************
⽤户⽤数字选择不同的功能
根据功能选择,执⾏不同的功能
⽤户名⽚需要记录⽤户的 姓名、电话、QQ、邮件
如果查询到指定的名⽚,⽤户可以选择 修改 或者 删除 名⽚
步骤
1.框架搭建
2.新增名⽚
3.显示所有名⽚
4.查询名⽚
5.查询成功后修改、删除名⽚
6.让 Python 程序能够直接运⾏
2.1框架搭建
⽬标
搭建名⽚管理系统 框架结构
1.准备⽂件,确定⽂件名,保证能够 在需要的位置 编写代码
2.编写 主运⾏循环,实现基本的 ⽤户输⼊和判断
2.2⽂件准备
1.新建 cards_main.py 保存 主程序功能代码程序的⼊⼝
每⼀次启动名⽚管理系统都通过 main 这个⽂件启动
2.新建 cards_tools.py 保存 所有名⽚功能函数
将对名⽚的 新增、查询、修改、删除 等功能封装在不同的函数中
2.3编写主运⾏循环
在 cards_main 中添加⼀个 ⽆限循环
while True:
# TODO(⼩明) 显示系统菜单
action = input("请选择操作功能:")
print("您选择的操作是:%s" % action)
# 根据⽤户输⼊决定后续的操作
if action in ["1", "2", "3"]: pass
elif action == "0":
print("欢迎再次使⽤【名⽚管理系统】")
break else:
print("输⼊错误,请重新输⼊")
字符串判断
if action in ["1", "2", "3"]:
if action == "1" or action == "2" or action == "3":
1.使⽤ in 针对 列表 判断,避免使⽤ or 拼接复杂的逻辑条件
2.没有使⽤ int 转换⽤户输⼊,可以避免 ⼀旦⽤户输⼊的不是数字,导致程序运⾏出错
pass
pass 就是⼀个空语句,不做任何事情,⼀般⽤做占位语句是为了保持程序结构的完整性
⽆限循环
在开发软件时,如果 不希望程序执⾏后 ⽴即退出可以在程序中增加⼀个 ⽆限循环
由⽤户来决定 退出程序的时机
TODO 注释
在 # 后跟上 TODO ,⽤于标记需要去做的⼯作
# TODO(作者/邮件) 显示系统菜单
2.4在 cards_tools 中增加四个新函数
def show_menu():
"""显示菜单
"""
pass
def new_card():
"""新建名⽚
"""
print("-" * 50)
print("功能:新建名⽚")
def show_all():
"""显示全部
"""
print("-" * 50)
print("功能:显示全部")
def search_card():
"""搜索名⽚
"""
print("-" * 50)
print("功能:搜索名⽚")
2.5导⼊模块
在 cards_main.py 中使⽤ import 导⼊ cards_tools 模块 import cards_tools
修改 while 循环的代码如下:
import cards_tools while True:
cards_tools.show_menu()
action = input("请选择操作功能:")
print("您选择的操作是:%s" % action)
# 根据⽤户输⼊决定后续的操作
if action in ["1", "2", "3"]:
if action == "1": cards_tools.new_card()
elif action == "2": cards_tools.show_all()
elif action == "3": cards_tools.search_card()
elif action == "0":
print("欢迎再次使⽤【名⽚管理系统】")
break else:
print("输⼊错误,请重新输⼊:"
⾄此:cards_main 中的所有代码全部开发完毕!
2.6完成 show_menu 函数
def show_menu():
"""显示菜单
"""
print("*" * 50)
print("欢迎使⽤【菜单管理系统】V1.0") print("")
print("1. 新建名⽚")
print("2. 显示全部")
print("3. 查询名⽚")
print("")
print("0. 退出系统")
print("*" * 50)
2.7保存名⽚数据的结构
程序就是⽤来处理数据的,⽽变量就是⽤来存储数据的
使⽤ 字典 记录 每⼀张名⽚ 的详细信息使⽤ 列表 统⼀记录所有的 名⽚字典
定义名⽚列表变量
在 cards_tools ⽂件的顶部增加⼀个 列表变量
# 所有名⽚记录的列表
card_list = []
注意
所有名⽚相关操作,都需要使⽤这个列表,所以应该 定义在程序的顶部程序刚运⾏时,没有数据,所以是 空列表
03.新增名⽚
3.1功能分析
1.提示⽤户依次输⼊名⽚信息
2.将名⽚信息保存到⼀个字典
3.将字典添加到名⽚列表
4.提示名⽚添加完成
3.2实现 new_card ⽅法
def new_card():
"""新建名⽚据步骤实现代码
"""
print("-" * 50)
print("功能:新建名⽚")
# 1. 提示⽤户输⼊名⽚信息name = input("请输⼊姓名:") phone = input("请输⼊电话:")
qq = input("请输⼊ QQ 号码:") email = input("请输⼊邮箱:")
# 2. 将⽤户信息保存到⼀个字典
card_dict = {"name": name,
"phone": phone, "qq": qq, "email": email}
# 3. 将⽤户字典添加到名⽚列表
card_list.append(card_dict) print(card_list)
# 4. 提示添加成功信息
print("成功添加 %s 的名⽚" % card_dict["name"])
技巧:在 PyCharm 中,可以使⽤ SHIFT + F6 统⼀修改变量名
04.显示所有名⽚
4.1功能分析
循环遍历名⽚列表,顺序显示每⼀个字典的信息
4.2基础代码实现
def show_all():
"""显示全部
"""
print("-" * 50)
print("功能:显示全部")
for card_dict in card_list: print(card_dict)
显示效果不好!
4.3增加标题和使⽤\t 显示
def show_all():
"""显示全部
"""
print("-" * 50)
print("功能:显示全部")
# 打印表头
for name in ["姓名", "电话", "QQ", "邮箱"]: print(name, end="\t\t")
print("")
# 打印分隔线
print("=" * 50)
for card_dict in card_list: print("%s\t\t%s\t\t%s\t\t%s" % (card_dict["name"],
card_dict["phone"], card_dict["qq"], card_dict["email"]))
4.4增加没有名⽚记录判断
def show_all():
"""显示全部
"""
print("-" * 50)
print("功能:显示全部")
# 1. 判断是否有名⽚记录
if len(card_list) == 0:
print("提示:没有任何名⽚记录")
return
注意
在函数中使⽤ return 表示返回
如果在 return 后没有跟任何内容,只是表示该函数执⾏到此就不再执⾏后续的代码
05.查询名⽚
5.1功能分析
1.提示⽤户要搜索的姓名
2.根据⽤户输⼊的姓名遍历列表
3.搜索到指定的名⽚后,再执⾏后续的操作
5.2代码实现
查询功能实现
def search_card():
"""搜索名⽚
"""
print("-" * 50)
print("功能:搜索名⽚")
# 1. 提示要搜索的姓名
find_name = input("请输⼊要搜索的姓名:")
# 2. 遍历字典
for card_dict in card_list:
if card_dict["name"] == find_name:
print("姓名\t\t\t电话\t\t\tQQ\t\t\t邮箱") print("-" * 40)
print("%s\t\t\t%s\t\t\t%s\t\t\t%s" % ( card_dict["name"], card_dict["phone"], card_dict["qq"], card_dict["email"]))
print("-" * 40)
# TODO(⼩明) 针对找到的字典进⾏后续操作:修改/删除
break
else:
print("没有找到 %s" % find_name)
增加名⽚操作函数:修改/删除/返回主菜单
def deal_card(find_dict):
"""操作搜索到的名⽚字典
:param find_dict:找到的名⽚字典"""
print(find_dict)
action_str = input("请选择要执⾏的操作 "
"[1] 修改 [2] 删除 [0] 返回上级菜单")
if action == "1":
print("修改") elif action == "2":
print("删除")
06.修改和删除
6.1查询成功后删除名⽚
由于找到的字典记录已经在列表中保存
要删除名⽚记录,只需要把列表中对应的字典删除即可
elif action == "2": card_list.remove(find_dict)
print("删除成功")
6.2修改名⽚
由于找到的字典记录已经在列表中保存
要修改名⽚记录,只需要把列表中对应的字典中每⼀个键值对的数据修改即可
if action == "1":
find_dict["name"] = input("请输⼊姓名:")
find_dict["phone"] = input("请输⼊电话:")
find_dict["qq"] = input(" 请 输 ⼊ QQ:")
find_dict["email"] = input("请输⼊邮件:")
print("%s 的名⽚修改成功" % find_dict["name"])
作者: cai901022 时间: 2018-8-24 13:40
66666666666666666666
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |