python实现一个函数版的名片管理系统过程解析


Posted in Python onAugust 27, 2019

本案例使用了自定义函数以及对字符串的常见操作、判断语句和循环语句等知识。

要求

必须使用自定义函数,完成对程序的模块化。

名片信息至少包括:姓名、电话、住址。

必须完成的功能:增、删、改、查、退出。

分析

首先呢,我们应该先定义一个全局变量,用于存储所有的名片信息。

cards = [{
  "name": "张三",
  "phone": "10086",
  "address": "山西省",
}, {
  "name": "李四",
  "phone": "10010",
  "address": "北京市",
}] # 定义一个的列表用于存放名片信息,默认里面有张三和李四的信息,方便以后调试用。

完成增加,删除,修改,查找等相关操作的函数(cards是可变类型的全局变量,故在函数中不用加global也可调用),注意:如定义变量 a: int = 0, int只是单纯的提示开发人员它的类型是int,方便调试。

def print_menu():
  """"完成打印功能菜单"""
  print("=" * 20)
  print("  名片管理系统")
  print(" 1:添加一个名片")
  print(" 2:删除一个名片")
  print(" 3:修改一个名片")
  print(" 4:查询一个名片")
  print(" 5:显示所有的名片")
  print(" 6:退出")
  print("=" * 20)


def add_card():
  """完成添加一个名片的功能"""
  new_infor: dict = {
    "name": input("请输入一个名字:"), 
    "phone": input("请输入一个电话:"), 
    "address": input("请输入一个地址:")
  }
  cards.append(new_infor)
  print("添加成功!")


def delete_card():
  del_name = input("请输入要删除的名字:")
  for person in cards:
    if del_name == person["name"]:
      cards.remove(person)
      print("删除成功!")
      break
  else:
    print("找不到要删除的人!")


def update_card():
  name: str = input("请输入要修改的名字(只能通过名字来修改电话和住址):")
  for person in cards:
    if name == person["name"]:
      phone = input("请输入新的的电话(直接回车则不修改):")
      address = input("请输入新的的地址(直接回车则不修改):")
      if phone:
        person["phone"] = phone
      if address:
        person["address"] = address
      print("修改成功")
      break
  else:
    print("找不到要修改的人!")


def find_card():
  """用来查询一个名片"""

  find_name: str = input("请输入要查询的名字(支持模糊查询):")
  flag: int = 1
  for temp in cards:
    # 遍历名片中的所有名字,判断要查找的名字是否存在,不存在则打印查无此人
    if temp["name"].find(find_name) != -1:
      print("%s\t%s\t%s" % (temp["name"], temp["phone"], temp["address"]))
      flag = 0
  if flag:
    print("查无此人")


def show_all():
  print("姓名\t电话\t住址")
  for temp in cards:
    print("%s\t%s\t%s" % (temp["name"], temp["phone"], temp["address"]))

最后完成主函数的功能,并调用主函数

def main():
  """"完成对整个程序的控制"""
  # 打印功能提示
  print_menu()
  while True:
    # 获取用户的选择
    num: str = input("请输入功能序号:")
    # 判断输入的是否为数字
    if not num.isdigit():
      print("请输入数字!")
      continue
    # 转换成数字类型
    num: int = int(num)
    # 增
    if num == 1:
      add_card()
    # 删
    elif num == 2:
      delete_card()
    # 改
    elif num == 3:
      update_card()
    # 查
    elif num == 4:
      find_card()
    elif num == 5:
      show_all()
    elif num == 6:
      break
    else:
      print("请按号输入!")
    print()

# 调用主函数
if __name__ == '__main__':
  main()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 的 Socket 编程
Mar 24 Python
python下载图片实现方法(超简单)
Jul 21 Python
python 连接各类主流数据库的实例代码
Jan 30 Python
Python/ArcPy遍历指定目录中的MDB文件方法
Oct 27 Python
python事件驱动event实现详解
Nov 21 Python
python实现Flappy Bird源码
Dec 24 Python
Python3按一定数据位数格式处理bin文件的方法
Jan 24 Python
Python3中编码与解码之Unicode与bytes的讲解
Feb 28 Python
Python使用百度api做人脸对比的方法
Aug 28 Python
Python接口测试get请求过程详解
Feb 28 Python
基于Python下载网络图片方法汇总代码实例
Jun 24 Python
python代码实现猜拳小游戏
Nov 30 Python
python中下标和切片的使用方法解析
Aug 27 #Python
python使用if语句实现一个猜拳游戏详解
Aug 27 #Python
Python socket 套接字实现通信详解
Aug 27 #Python
python 使用pdfminer3k 读取PDF文档的例子
Aug 27 #Python
手写一个python迭代器过程详解
Aug 27 #Python
浅析Python语言自带的数据结构有哪些
Aug 27 #Python
python3应用windows api对后台程序窗口及桌面截图并保存的方法
Aug 27 #Python
You might like
解析PHP多种序列化与反序列化的方法
2013/06/06 PHP
php中stream(流)的用法
2014/03/25 PHP
PhpStorm terminal无法输入命令的解决方法
2016/10/09 PHP
PHP实现蛇形矩阵,回环矩阵及数字螺旋矩阵的方法分析
2017/05/29 PHP
Laravel 队列使用的实现
2019/01/08 PHP
jquery zTree异步加载简单实例分享
2013/02/05 Javascript
导入extjs、jquery 文件时$使用冲突问题解决方法
2014/01/14 Javascript
信息页文内画中画广告js实现代码(文中加载广告方式)
2016/01/03 Javascript
jquery实现简单Tab切换菜单效果
2020/07/17 Javascript
如何用JS判断两个数字的大小
2016/07/21 Javascript
详解Jest结合Vue-test-utils使用的初步实践
2019/06/27 Javascript
基于Taro的微信小程序模板消息-获取formId功能模块封装实践
2019/07/15 Javascript
微信小程序页面上下滚动效果
2020/11/18 Javascript
解析原来浏览器原生支持JS Base64编码解码
2019/08/12 Javascript
js判断复选框是否选中的方法示例【基于jQuery】
2019/10/10 jQuery
详解Vscode中使用Eslint终极配置大全
2019/11/08 Javascript
jQuery操作元素追加内容示例
2020/01/10 jQuery
vue大型项目之分模块运行/打包的实现
2020/09/21 Javascript
用Python中的wxPython实现最基本的浏览器功能
2015/04/14 Python
Python fileinput模块使用实例
2015/05/28 Python
Python反转序列的方法实例分析
2018/03/21 Python
使用Python正则表达式操作文本数据的方法
2019/05/14 Python
win8.1安装Python 2.7版环境图文详解
2019/07/01 Python
在pycharm中文件取消用 pytest模式打开的操作
2020/09/01 Python
python中的列表和元组区别分析
2020/12/30 Python
馥绿德雅美国官方网站:Rene Furterer头皮护理专家
2019/05/01 全球购物
预备党员群众路线教育实践活动思想汇报2014
2014/10/25 职场文书
2014年团支书工作总结
2014/11/14 职场文书
工作经验交流材料
2014/12/30 职场文书
总账会计岗位职责
2015/04/02 职场文书
博物馆观后感
2015/06/05 职场文书
二婚主持词
2015/06/30 职场文书
Python基础之赋值,浅拷贝,深拷贝的区别
2021/04/30 Python
python之np.argmax()及对axis=0或者1的理解
2021/06/02 Python
Python干货实战之八音符酱小游戏全过程详解
2021/10/24 Python
Python实现批量自动整理文件
2022/03/16 Python