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之眼花缭乱的运算符
Sep 14 Python
python打开文件并获取文件相关属性的方法
Apr 23 Python
python使用fileinput模块实现逐行读取文件的方法
Apr 29 Python
利用Python学习RabbitMQ消息队列
Nov 30 Python
python实现分页效果
Oct 25 Python
django session完成状态保持的方法
Nov 27 Python
Pycharm如何打断点的方法步骤
Jun 13 Python
python保存字典和读取字典的实例代码
Jul 07 Python
浅谈Django+Gunicorn+Nginx部署之路
Sep 11 Python
pytorch使用 to 进行类型转换方式
Jan 08 Python
编译 pycaffe时报错:fatal error: numpy/arrayobject.h没有那个文件或目录
Nov 29 Python
Python爬虫+Tkinter制作一个翻译软件的示例
Feb 20 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 has encountered an Access Violation at 7C94BD02解决方法
2009/08/24 PHP
Laravel如何使用数据库事务及捕获事务失败后的异常详解
2017/10/23 PHP
调试php程序的简单步骤
2019/10/04 PHP
ExtJS TabPanel beforeremove beforeclose使用说明
2010/03/31 Javascript
js判断是否为数组的函数: isArray()
2011/10/30 Javascript
js使用for循环及if语句判断多个一样的name
2014/09/09 Javascript
javascript实现动态模态绑定grid过程代码
2014/09/22 Javascript
JS或jQuery获取ASP.NET服务器控件ID的方法
2015/06/08 Javascript
AngularJS学习笔记之ng-options指令
2015/06/16 Javascript
PHP+jQuery+Ajax+Mysql如何实现发表心情功能
2015/08/06 Javascript
实例讲解js验证表单项是否为空的方法
2016/01/09 Javascript
浏览器检测JS代码(兼容目前各大主流浏览器)
2016/02/21 Javascript
JS+CSS实现闪烁字体效果代码
2016/04/05 Javascript
前端框架Vue.js中Directive知识详解
2016/09/12 Javascript
详解Javascript中DOM的范围
2017/02/13 Javascript
微信小程序 引用其他js文件实现代码
2017/02/22 Javascript
javascript实现blob加密视频源地址的方法
2019/08/08 Javascript
Vue3 响应式侦听与计算的实现
2020/11/11 Javascript
[01:54]TI珍贵瞬间系列(五):压力
2020/08/29 DOTA
用Python编写一个简单的FUSE文件系统的教程
2015/04/02 Python
在centos7中分布式部署pyspider
2017/05/03 Python
Python实现的购物车功能示例
2018/02/11 Python
对numpy中布尔型数组的处理方法详解
2018/04/17 Python
windows下numpy下载与安装图文教程
2019/04/02 Python
Django项目中添加ldap登陆认证功能的实现
2019/04/04 Python
使用python3调用wxpy模块监控linux日志并定时发送消息给群组或好友
2019/06/05 Python
python的sorted用法详解
2019/06/25 Python
解决pycharm不能自动补全第三方库的函数和属性问题
2020/03/12 Python
如何使用python的ctypes调用医保中心的dll动态库下载医保中心的账单
2020/05/24 Python
解决virtualenv -p python3 venv报错的问题
2021/02/05 Python
CSS3实现3D翻书效果
2016/06/20 HTML / CSS
Club Monaco加拿大官网:设计师男女服装
2019/09/29 全球购物
英国奢华护肤、美容和Spa品牌:Temple Spa
2019/11/02 全球购物
环境工程与管理大学毕业生求职信
2013/10/02 职场文书
大学生毕业自我鉴定
2013/11/06 职场文书
《折线统计图》教学反思
2016/02/22 职场文书