本文章是记录自己学习python的过程,起到一个笔记的作用,主要是实现名片管理项目中新建名片、查看全部名片、以及查询名片并对所查询的名片进行修改、删除等简单操作。后续还会增加保存数据、对输入的数据进行格式限制:例如邮箱的格式、手机号只允许输入0-9的11位数字,增加面向对象等功能

此文件是对各个功能进行定义,主要定义了新建名片功能、查看全部名片功能、查询名片功能、对查询名片进行修改、删除的定义以及对input功能扩展来实现回车不进行修改返回默认值操作。

其中修改名片功能中使用了传参,

find_dict['name']  =  input_card_info(find_dict.get('name'),"请输入修改后的姓名[不修改直接回车]:")

其中将“find_dict.get('name'),"请输入修改后的姓名[不修改直接回车]”实参 传参到调用函数 “ input_card_info(dict_value, msg)”中,“find_dict.get('name')”传入到形参dict_value中,"请输入修改后的姓名[不修改直接回车]”传参到msg中;

#当前文件负责各个功能函数的实现和定义
#当前文件负责定义函数,不负责调用
#实现功能:显示菜单、新建名片、显示全部名片、查询名片、修改名片、删除名片、返回上一级#定义全局变量 名片列表
card_list= []#定义显示菜单功能函数def show_menu():"""当前函数实现显示菜单函数"""print("")print("*" * 50)print("欢迎使用[名片管理系统] v1.0")print("")#空行print("1. 新建名片")print("2. 显示全部")print("3. 查询名片")print("")#空行print("0. 退出系统")print("*" * 50)print("")#定义新建名片功能函数
def new_card():"""当前函数实现了新建名片功能:return:"""print("[功能]——新建名片")# 1.获取用户输入信息name_str  = input("请输入姓名:")sex_str   = input("请输入性别:")phone_str = input("请输入电话:")qq_str    = input("请输入QQ号:")Email_str = input("请输入邮箱:")# 2.将获取的输入信息保存到字典中new_dict = {'name':name_str,'sex':sex_str,'phone':phone_str,'qq':qq_str,'Email':Email_str }# 3.将字典添加到列表中card_list.append(new_dict)# 4.打印提示,新建新建名片成功print(" 新建 名片成功!","姓名是:%s " %name_str)print("名片列表,card_list:",card_list)
#定义显示全部名片功能函数
def show_all_card():"""当前函数实现显示全部名片的功能:return:"""#pass       #pass是占位符,起到完善语法结构的作用,不输入任何内容print("[功能]——显示全部名片")#0.先判断名片列表中有没有数据,若无数据,提示新建名片,# 并且代码不在向下执行   用return终止函数运行if len(card_list) <= 0:print("当前名片列表中没有数据,请新建名片")return#1.先打印表头print("-" * 70)print("姓名".ljust(10),"性别".ljust(10),"电话".ljust(10),"qq".ljust(10),"邮箱".ljust(10),sep="\t\t") #sep="\t\t"每个数据之间两个tap键插入print("-" * 70)#2.按照格式打印表格里数据(把名片列表中的数据打印出来)for item in card_list:  #临时变量item 获取的是列表中的一个个字典print(item.get('name').ljust(10),item.get('sex').ljust(10),item.get('phone').ljust(10),item.get('qq').ljust(10),item.get('Email').ljust(10),sep="\t\t")#定义查询名片功能函数
def search_card():"""当前函数实现查询语法名片的功能:return:"""#passprint("[功能]——查询名片")#1.获取用户要查询的姓名find_name = input("请输入你要查询的姓名:")#2.拿着要查询的姓名到名片列表中查找for item in card_list:# 临时变量item获取的是列表中一个个字典if item.get('name') == find_name:#3.如果找到,打印提示找到的的信息print("以及找到姓名是:%s 的信息了" % item.get('name'))#打印表头print("-" * 70)print("姓名".ljust(10), "性别".ljust(10), "电话".ljust(10), "qq".ljust(10), "邮箱".ljust(10),sep="\t\t")  # sep="\t\t"每个数据之间两个tap键插入print("-" * 70)#打印表格里的数据print(item.get('name').ljust(10),item.get('sex').ljust(10),item.get('phone').ljust,item.get('qq').ljust(10),item.get('Email').ljust(10),  sep="\t\t")#调用对名片的操作选择函数deal_card(item)#以及找到人物信息,退出循环break#4.如果没有找到,提示没有找到这个人物的信息else:print("没有找到姓名为: %s 的信息,请核对后重新输入!" % find_name)#对当前名片进行操作选择函数
def deal_card(find_dict):"""当前函数对名片进行操作选择的功能:修改、删除、返回上一级:return:"""#获取用户输入信息op = input("请输入对名片的操作选择:[1.修改  2.删除  0.返回上一级]")print("请输入您的选择:")#根据用户的输入信息进行判断if op == "1":#若用户输入”1“,修改名片print("[功能]————修改名片")#1.获取修改后的信息#2.将获取到修改后的数据 替换字典的key对于的value的值find_dict['name']  =  input_card_info(find_dict.get('name'),"请输入修改后的姓名[不修改直接回车]:")find_dict['sex']   =  input_card_info(find_dict.get('sex'),"请输入修改后的性别[不修改直接回车]:")find_dict['phone'] =  input_card_info(find_dict.get('phone'),"请输入修改后的手机号[不修改直接回车]:")find_dict['qq']    =  input_card_info(find_dict.get('qq'),"请输入修改后的qq[不修改直接回车]:")find_dict['Email'] =  input_card_info(find_dict.get('Email'),"请输入修改后的邮箱[不修改直接回车]:")#3.打印修改名片成功print("名片修改成功")elif op == "2":#若用户输入”2“,删除名片print("[功能]————删除名片")#把名片列表中的字典删除card_list.remove(find_dict)#提示删除成功print("删除名片成功")elif op == "0":#若用户输入”0“,返回上一级print("[功能]————返回上一级")# 提前结束函数运行returnelse:#若用户输入其他,提示”输入有误“print("您的输入有误,请重新输入")def input_card_info(dict_value, msg):"""当前函数对input()函数进行功能扩充:param msg::return:"""# 1.使用input()函数获取用户的输入信息info = input(msg)# 2.对用户的输入信息进行判断# 3.若有input有输入信息,把输入的信息返回给字典的key对应的valueif len(info) > 0:return info# 4.若用户没有输入信息,不能返回空字符串,把字典默认值返回else:return dict_value

这个文件是用来调用定义的功能函数,再次文件运行即可。

#当前文件card.main.py是总控中心,不负责实现各种功能,是负责调度各种功能函数的
#所有功能函数都由其来调度
#1.导入工具包
import cards_tool
#添加死循环,让菜单重复显示
while True:#2.使用工具包中的工具 模块名.函数名()# 显示菜单功能函数cards_tool.show_menu()#对于循环次数不确定时,可以使用死循环,#但是死循环中必须要有退出条件,死循环可以用break来打破#获取用户的输入选择option = input("请输入您的选择:")  #input函数输入的都是字符串#print(option)#print(type(option))#根据用户的输入选择进行判断if option in ["1","2","3"]:#对option的值进行进一步判断if option == "1":#用户想要新建名片cards_tool.new_card()elif option == "2":#用户想要显示全部名片cards_tool.show_all_card()else:#用户想要查询名片cards_tool.search_card()elif option == "0":print("欢迎使用名片管理系统")print("欢迎再次使用")#当用户输入"0",想要退出名片管理系统,break跳出死循环breakelse:print("您的输入有误,请核对后重新输入")
print(">>>>名片管理系统程序结束<<<")

python初学项目实战——名片管理系统(一)相关推荐

  1. 微项目:名片管理系统

    名片管理系统是一个检验Python初学者入门的实战小项目,它覆盖了Python程序设计的一些基础知识,其中包括有模块.输入/输出.while语句.if-elif-else语句.for循环语句.占位符/ ...

  2. python爬虫项目-33个Python爬虫项目实战(推荐)

    今天为大家整理了32个Python爬虫项目. 整理的原因是,爬虫入门简单快速,也非常适合新入门的小伙伴培养信心.所有链接指向GitHub,祝大家玩的愉快~O(∩_∩)O WechatSogou [1] ...

  3. python智慧城市_智慧城市背景下Python机器学习项目实战案例分享

    首先,何为智慧城市?智慧城市的"智慧"源自何处? 智慧城市的特征在于运用大数据和数字技术提高居民生活质量. 机构获得的数据越全面.越实时,它们就越有能力观测事件发生的详情.分析需求 ...

  4. python人工智能项目实例-python人工智能项目实战,PDF+源码

    原标题:python人工智能项目实战,PDF+源码 <python人工智能项目 Intelligent Projects Using Python> 实施机器学习和深度学习方法,使用Pyt ...

  5. 智慧城市背景下Python机器学习项目实战案例分享

    首先,何为智慧城市?智慧城市的"智慧"源自何处? 智慧城市的特征在于运用大数据和数字技术提高居民生活质量. 机构获得的数据越全面.越实时,它们就越有能力观测事件发生的详情.分析需求 ...

  6. python爬虫知网实例-33个Python爬虫项目实战(推荐)

    今天为大家整理了32个Python爬虫项目. 整理的原因是,爬虫入门简单快速,也非常适合新入门的小伙伴培养信心.所有链接指向GitHub,祝大家玩的愉快~O(∩_∩)O WechatSogou [1] ...

  7. python金融实战 源代码_穆棱市seo总代直销python金融量化营业实战课程 python量化项目实战源码+课件+视频...

    python金融量化生意实战课程 python量化项目实战源码+课件+视频 1. 自愿化生意综述 重要实质: 课程实质综述,自愿化/算法生意先容,python正在自愿生意中的使用简介 2. 量化生意体 ...

  8. python爬虫项目实战教学视频_('[Python爬虫]---Python爬虫进阶项目实战视频',)

    爬虫]---Python 爬虫进阶项目实战 1- Python3+Pip环境配置 2- MongoDB环境配置 3- Redis环境配置 4- 4-MySQL的安装 5- 5-Python多版本共存配 ...

  9. Java项目实战---歌曲管理系统

    Java项目实战-歌曲管理系统 声明:本人仅整理了代码,方便大家进行调试优化,功能上还存在很多纰漏,欢迎大家评论区讨论 代码原地址放于文章末尾 一.实验目的: 掌握类的定义,JAVA应用程序的设计与实 ...

  10. Vue项目实战 —— 后台管理系统( pc端 ) 第三篇

    ​前期回顾    ​  Vue项目实战 -- 后台管理系统( pc端 ) 第二篇_0.活在风浪里的博客-CSDN博客前期回顾 Vue项目实战 -- 后台管理系统( pc端 ) 第一篇 _0.活在风浪里 ...

最新文章

  1. es6 语法 (Proxy和Reflect 的对比)
  2. Asp.NET获取文件及其路径
  3. linux 以太网转wifi,LINUX-网络 - (以太网和WIFI无线)
  4. 新编辑神器,可以在终端运行 Jupyter Notebook 了!
  5. 设计高效sql一般经验谈
  6. SQL Server 中 EXEC 与 SP_EXECUTESQL 的区别
  7. Unity 开发和配置
  8. vue 实现页面静态化
  9. 如何修改Oracle并发连接数的设置
  10. 深度学习 --- 随机神经网络详解(玻尔兹曼机学习算法、运行算法)
  11. pcl命名空间:segmentation/extract_clusters.h与segmentation/imp/extract_clusters.hpp
  12. 软件架构图该怎么画?架构设计如何标准化?
  13. 图片转文字、视频转文字 超赞网页分享
  14. 四叶草云演-CTF04# 后台管理系统
  15. Mysql删除数据什么情况下会释放空间
  16. ubuntu与centos哪个更适合做服务器。
  17. 怎么做一名合格的测试工程师
  18. oracle join 优化询,oracle中优化left join的工作心得
  19. STC8H库函数使用笔记
  20. 阿里会成为下一个谷歌?谁才是Google真正的挑战者

热门文章

  1. unix bsd linux shell bash GNU之间的联系,歪讲Linux(一)
  2. LaTeX插入参考文献,简单高效
  3. android 投屏 版本号,Android开源投屏软件——Scrcpy
  4. PX4新增自定义orb消息
  5. 访黏度计算公式_调节阀流量系数Kv的计算公式
  6. outlook 您的组织策略阻止我们为您完成此操作
  7. 将文件按照文件名分类到文件夹
  8. 可视化——统计图表介绍
  9. 为什么那么多城市房价开始跌了,还是有人相信房价会一直涨?
  10. 算法竞赛进阶指南0x00基本算法 0x01位运算 例题起床困难综合征