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通过字典dict判断指定键值是否存在的方法
Mar 21 Python
尝试用最短的Python代码来实现服务器和代理服务器
Jun 23 Python
python的exec、eval使用分析
Dec 11 Python
PyQt5实现无边框窗口的标题拖动和窗口缩放
Apr 19 Python
Python之用户输入的实例
Jun 22 Python
Numpy中的mask的使用
Jul 21 Python
python按时间排序目录下的文件实现方法
Oct 17 Python
利用python脚本如何简化jar操作命令
Feb 24 Python
python脚本实现音频m4a格式转成MP3格式的实例代码
Oct 09 Python
python实现将json多行数据传入到mysql中使用
Dec 31 Python
python爬虫请求库httpx和parsel解析库的使用测评
May 10 Python
如何基于python实现单目三维重建详解
Jun 25 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
IIS7.X配置PHP运行环境小结
2011/06/09 PHP
关于php中的json_encode()和json_decode()函数的一些说明
2016/11/20 PHP
PHP巧妙利用位运算实现网站权限管理的方法
2017/03/12 PHP
PHP高精确度运算BC函数库实例详解
2017/08/15 PHP
JavaScript获取flash对象与网上的有所不同
2014/04/21 Javascript
javascript移动设备Web开发中对touch事件的封装实例
2014/06/05 Javascript
Node.js编码规范
2014/07/14 Javascript
jquery队列函数用法实例
2014/12/16 Javascript
jquery的ajax提交form表单的两种方法小结(推荐)
2016/05/25 Javascript
js倒计时显示实例
2016/12/11 Javascript
Angular.js中处理页面闪烁的方法详解
2017/03/09 Javascript
jQuery、layer实现弹出层的打开、关闭功能
2017/06/28 jQuery
vue中的event bus非父子组件通信解析
2017/10/27 Javascript
vue实现路由监听和参数监听
2019/10/29 Javascript
Python Socket使用实例
2017/12/18 Python
Python 编程速成(推荐)
2019/04/15 Python
Python列表对象实现原理详解
2019/07/01 Python
django-初始配置(纯手写)详解
2019/07/30 Python
pytorch获取模型某一层参数名及参数值方式
2019/12/30 Python
Python内存映射文件读写方式
2020/04/24 Python
Selenium及python实现滚动操作多种方法
2020/07/21 Python
英国第一豪华护肤品牌:Elemis
2017/10/12 全球购物
西班牙在线宠物食品和配件商店:bitiba
2019/10/11 全球购物
合作投资意向书
2014/04/01 职场文书
雷锋精神演讲稿
2014/05/13 职场文书
小学假期安全广播稿
2014/09/28 职场文书
对照检查剖析材料
2014/09/30 职场文书
乡镇干部个人整改措施思想汇报
2014/10/10 职场文书
胡雪岩故居导游词
2015/02/06 职场文书
六一儿童节主持开场白
2015/05/28 职场文书
2015年高三教学工作总结
2015/07/21 职场文书
基于Redis实现分布式锁的方法(lua脚本版)
2021/05/12 Redis
用React Native制作一个简单的游戏引擎
2021/05/27 Javascript
详解Python生成器和基于生成器的协程
2021/06/03 Python
Nginx性能优化之Gzip压缩设置详解(最大程度提高页面打开速度)
2022/02/12 Servers
Win11局域网共享权限在哪里设置? Win11高级共享的设置技巧
2022/04/05 数码科技