python学习告一段落,利用python自己写的名片管理系统。
代码跟大一C语言课程设计开发的系统极其类似,那时候自己很喜欢写程序,晚上和舍友搞课程设计搞到两三点,哎,想想真是怀念。
荒废的时间已经拿不回来了。
种一棵树最好的时间是十年前,其次就是现在。
两个文件,一个main,一个tools。
使用字典记录每一张名片的详细信息
使用列表记录所有的字典名片
(只是个人认为重要点的知识点,不代表代码里没有别的重点= =)
1、pass关键字
如果在开发中,不希望立刻编写分支内部的代码,可以使用pass关键字,表示一个占位符,能够保证程序的代码结构正确。程序运行时,pass关键字不会执行任何操作。
2、字符串判断 in关键字
使用in关键字可以进行字符判断
num = "1"
if num in ["1", "2", "3"]: # 用in进行判断字符串是否是列表的成员
....
3、使用input()从键盘接收代码时,如果不确定用户输入类型,则不需要进行类型转换
PS:
# 转换为int
num = int(input("请输入一个数字"))
4、鼠标右键点击某个参数refactor中rename可以对文件中同名参数进行重命名
5、无限循环
需要进行重复操作时,可以使用无限循环,知道满足某一个条件break跳出循环。
whille True:
# 完成某一条件
break
6、TODO注释
使用TODO强调注释,并且可以在Pycharm中查看所有TODO注释。在项目开发完毕后,务必将所有TODO删除。
# TODO 使用TODO强化提示并且可以在pycharm中查看所有TODO
7、return的使用
return可以返回一个函数执行的结果,下方的代码不会被执行。如果return后面没有任何内容,则直接返回调用函数部分并执行调用函数后方代码。
8、增加文档注释
在项目完成后,需要对新写的函数增加文档注释,保证自己以后可以回想起函数的作用。
增加方法:鼠标放到函数名上,点击小黄色灯泡,选择Insert documentation string stub.
查看文档注释方法:鼠标放到函数名上,Ctrl+q
9、SheBang
在python文件第一行增加SheBang符号(#!)+python解释器完整路径,增加之后就不需要解释器可以直接在终端中运行。
10、给一个文件增加可执行权限
chmod +x cards_main.py
main.py
#! /usr/bin/python3
# 名片管理系统
import tools # 导入工具模块
version = "V1.0" # TODO(KaiSarH) 定义系统版本号
while True: # 使用无限循环保证代码不断重复
# 欢迎界面
# 定义operate_str保存用户选择的操作
operate_str = cards_tools.show_wel(version)
if operate_str in ["1", "2", "3"]:
# 新增名片
if operate_str == "1":
cards_tools.card_insert()
# 显示全部
elif operate_str == "2":
cards_tools.card_show()
# 查询名片
elif operate_str == "3":
cards_tools.card_search()
elif operate_str == "0":
print("欢迎再次使用名片管理系统!")
break
else:
print("您的输入不正确,请重新选择!")
tools.py
# 记录所有名片字典
card_list = []
def show_wel(version):
"""
欢迎界面
:param version:版本号
:return: 返回选择的操作
"""
print("*" * 50)
print("欢迎使用名片管理系统 %s " % version, end="\n\n")
print("1. 新建名片")
print("2. 显示全部")
print("3. 查询名片", end="\n\n")
print("0. 退出系统")
print("*" * 50)
operate_str = input("请选择希望执行的操作:")
print("您选择的操作是:%s" % operate_str)
return operate_str
def card_insert():
"""
新增名片
"""
print("功能:新增名片")
name_str = input("请输入姓名:")
phone_str = input("请输入电话:")
qq_str = input("请输入qq:")
email_str = input("请输入e-mail:")
card_dict = {"name": name_str,
"phone": phone_str,
"qq": qq_str,
"email": email_str}
card_list.append(card_dict)
print("添加 %s 的名片成功! " % name_str)
def card_show():
"""
显示所有名片
:return: 如果没有任何名片,返回空
"""
print("功能:显示所有名片")
# 判断是否有名片
if len(card_list) == 0:
print("当前名片列表中没有任何记录,请使用新增名片功能添加名片!")
return
# 显示表头
for list_head in ["姓名", "电话", "QQ", "邮箱"]:
print("%s" % list_head,end="\t\t")
print("")
# 显示分割线
print("-" * 51)
# 打印所有名片
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"]))
print("-" * 51)
def card_search():
"""
查询名片
"""
print("功能:查询名片")
search_name = input("请输入要搜索的姓名:")
for card_dict in card_list:
if card_dict["name"] == search_name:
print("姓名\t\t电话\t\tQQ\t\t邮箱\t\t")
print("-" * 51)
print("%s\t\t%s\t\t%s\t\t%s" % (card_dict["name"],
card_dict["phone"],
card_dict["qq"],
card_dict["email"]))
print("-" * 51)
card_deal(card_dict)
break
else:
print("没有找到%s的名片记录." % search_name)
def card_deal(search_dict):
"""
处理查找到的名片
:param search_dict: 查找到的名片
"""
operate_str = input("请选择要执行的操作:"
"1.修改 2.删除 0.返回上级菜单")
if operate_str == "1":
print("操作:修改名片")
search_dict["name"] = input_card_info(search_dict["name"], "姓名:(不需要修改按回车)")
search_dict["phone"] = input_card_info(search_dict["phone"], "电话:(不需要修改按回车)")
search_dict["qq"] = input_card_info(search_dict["qq"], "QQ:(不需要修改按回车)")
search_dict["e-mail"] = input_card_info(search_dict["e-mail"], "邮箱:(不需要修改按回车)")
print("修改%s的名片成功" % search_dict["name"])
elif operate_str == "2":
print("操作:删除名片")
card_list.remove(search_dict)
print("删除%s的名片成功" % search_dict["name"])
def input_card_info(dict_info, type_mess):
"""
输入名片信息
:param dict_info:字典中原有值
:param type_mess: 输入文字提示
:return: 如果有输入,则返回输入的值
"""
prin_info = input(type_mess)
if len(prin_info) > 0:
return prin_info
else:
return dict_info