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 相关文章推荐
linux下安装easy_install的方法
Feb 10 Python
python学习笔记:字典的使用示例详解
Jun 13 Python
python进阶教程之词典、字典、dict
Aug 29 Python
python实现字符串和日期相互转换的方法
May 13 Python
Python 迭代器工具包【推荐】
May 06 Python
Python中线程的MQ消息队列实现以及消息队列的优点解析
Jun 29 Python
Python复数属性和方法运算操作示例
Jul 21 Python
python在非root权限下的安装方法
Jan 23 Python
python pands实现execl转csv 并修改csv指定列的方法
Dec 12 Python
基于 Python 实践感知器分类算法
Jan 07 Python
详解python3类型注释annotations实用案例
Jan 20 Python
python神经网络编程之手写数字识别
May 08 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 split()函数的用法详解
2013/06/05 PHP
分享8个最佳的代码片段在线测试网站
2013/06/29 PHP
ThinkPHP模板判断输出Empty标签用法详解
2014/06/30 PHP
ThinkPHP中的常用查询语言汇总
2014/08/22 PHP
yii2整合百度编辑器umeditor及umeditor图片上传问题的解决办法
2016/04/20 PHP
php 一维数组的循环遍历实现代码
2017/04/10 PHP
使用CSS3实现字体颜色渐变的实现
2021/03/09 HTML / CSS
javascript 遍历验证所有文本框的值
2009/08/27 Javascript
可以将word转成html的js代码
2010/04/11 Javascript
jQuery实现点击标题输入详细信息
2013/04/16 Javascript
javascript获取网页中指定节点的父节点、子节点的方法小结
2013/04/24 Javascript
php读取sqlite数据库入门实例代码
2014/06/25 Javascript
jQuery实现为图片添加镜头放大效果的方法
2015/06/25 Javascript
每天一篇javascript学习小结(属性定义方法)
2015/11/19 Javascript
js实现接收表单的值并将值拼在表单action后面的方法
2015/11/23 Javascript
vue中英文切换实例代码
2020/01/21 Javascript
vscode调试node.js的实现方法
2020/03/22 Javascript
js 函数性能比较方法
2020/08/24 Javascript
[00:36]TI7不朽珍藏III——斯温不朽展示
2017/07/15 DOTA
[01:02:18]VGJ.S vs infamous Supermajor 败者组 BO3 第一场 6.4
2018/06/05 DOTA
Python内置函数bin() oct()等实现进制转换
2012/12/30 Python
python通过pil为png图片填充上背景颜色的方法
2015/03/17 Python
用Python实现换行符转换的脚本的教程
2015/04/16 Python
介绍Python中内置的itertools模块
2015/04/29 Python
python提取图像的名字*.jpg到txt文本的方法
2018/05/10 Python
Python SQL查询并生成json文件操作示例
2018/08/17 Python
python多进程使用及线程池的使用方法代码详解
2018/10/24 Python
Pycharm无法显示动态图片的解决方法
2018/10/28 Python
python实现石头剪刀布小游戏
2021/01/20 Python
Python Pandas中根据列的值选取多行数据
2019/07/08 Python
pygame实现俄罗斯方块游戏(对战篇1)
2019/10/29 Python
个人求职简历的自我评价
2013/10/19 职场文书
自我鉴定书
2014/03/24 职场文书
2014社区三八妇女节活动方案
2014/03/30 职场文书
你真的了解PHP中的引用符号(&)吗
2021/05/12 PHP
springboot中的pom文件 project报错问题
2022/01/18 Java/Android