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网络服务器
Jun 09 Python
使用pyecharts无法import Bar的解决方案
Apr 23 Python
python 中的list和array的不同之处及转换问题
Mar 13 Python
python 分离文件名和路径以及分离文件名和后缀的方法
Oct 21 Python
python 解压pkl文件的方法
Oct 25 Python
在ubuntu16.04中将python3设置为默认的命令写法
Oct 31 Python
实例详解Python装饰器与闭包
Jul 29 Python
python如何实现不用装饰器实现登陆器小程序
Dec 14 Python
pytorch实现focal loss的两种方式小结
Jan 02 Python
python GUI库图形界面开发之PyQt5窗口布局控件QStackedWidget详细使用方法
Feb 27 Python
翻转数列python实现,求前n项和,并能输出整个数列的案例
May 03 Python
python字符串拼接+和join的区别详解
Dec 03 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
让你的WINDOWS同时支持MYSQL4,MYSQL4.1,MYSQL5X
2006/12/06 PHP
php跨域cookie共享使用方法
2014/02/20 PHP
PHP模块memcached使用指南
2014/12/08 PHP
php中关于socket的系列函数总结
2015/05/18 PHP
使用jQuery轻松实现Ajax的实例代码
2010/08/16 Javascript
js防止页面被iframe调用的方法
2014/10/30 Javascript
javascript对象的创建和访问
2016/03/08 Javascript
JS实现关闭当前页而不弹出提示框的方法
2016/06/22 Javascript
Sortable.js拖拽排序使用方法解析
2016/11/04 Javascript
简单谈谈原生js的math对象
2017/06/27 Javascript
nodejs express配置自签名https服务器的方法
2018/05/22 NodeJs
vue项目中将element-ui table表格写成组件的实现代码
2019/06/12 Javascript
Vue 中如何将函数作为 props 传递给组件的实现代码
2020/05/12 Javascript
[05:49]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS 选手采访
2021/03/11 DOTA
全面解析Python的While循环语句的使用方法
2015/10/13 Python
Python爬虫实现网页信息抓取功能示例【URL与正则模块】
2017/05/18 Python
django反向解析和正向解析的方式
2018/06/05 Python
python之cv2与图像的载入、显示和保存实例
2018/12/05 Python
解决Python中回文数和质数的问题
2019/11/24 Python
Python进阶之迭代器与迭代器切片教程
2020/01/29 Python
Tensorflow 多线程设置方式
2020/02/06 Python
Python多重继承之菱形继承的实例详解
2020/02/12 Python
使用Python对Dicom文件进行读取与写入的实现
2020/04/20 Python
如何在python中实现线性回归
2020/08/10 Python
Django通过设置CORS解决跨域问题
2020/11/26 Python
HTML5实现移动端弹幕动画效果
2019/08/01 HTML / CSS
高分子材料与工程专业个人求职信
2013/12/15 职场文书
吨的认识教学反思
2014/04/27 职场文书
校园安全标语
2014/06/07 职场文书
校运会口号
2014/06/18 职场文书
原料仓管员岗位职责
2015/04/01 职场文书
2015年党务公开工作总结
2015/05/19 职场文书
楚门的世界观后感
2015/06/03 职场文书
MySQL 8.0 驱动与阿里druid版本兼容问题解决
2021/07/01 MySQL
Javascript webpack动态import
2022/04/19 Javascript
CSS子盒子水平和垂直居中的五种方法
2022/07/23 HTML / CSS