加强练习
模块的基本使⽤
学⽣管理系统
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.01.
新建名⽚
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"])
更多免费技术资料可关注:annalin1203