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

要求

  1. 必须使用自定义函数,完成对程序的模块化。
  2. 名片信息至少包括:姓名、电话、住址。
  3. 必须完成的功能:增、删、改、查、退出。

分析

  1. 首先呢,我们应该先定义一个全局变量,用于存储所有的名片信息。
  1. cards = [{
  2. "name": "张三",
  3. "phone": "10086",
  4. "address": "山西省",
  5. }, {
  6. "name": "李四",
  7. "phone": "10010",
  8. "address": "北京市",
  9. }] # 定义一个的列表用于存放名片信息,默认里面有张三和李四的信息,方便以后调试用。
  1. 完成增加,删除,修改,查找等相关操作的函数(cards是可变类型的全局变量,故在函数中不用加global也可调用),注意:如定义变量 a: int = 0, int只是单纯的提示开发人员它的类型是int,方便调试。
  1. def print_menu():
  2. """"完成打印功能菜单"""
  3. print("=" * 20)
  4. print(" 名片管理系统")
  5. print(" 1:添加一个名片")
  6. print(" 2:删除一个名片")
  7. print(" 3:修改一个名片")
  8. print(" 4:查询一个名片")
  9. print(" 5:显示所有的名片")
  10. print(" 6:退出")
  11. print("=" * 20)
  12. def add_card():
  13. """完成添加一个名片的功能"""
  14. new_infor: dict = {
  15. "name": input("请输入一个名字:"),
  16. "phone": input("请输入一个电话:"),
  17. "address": input("请输入一个地址:")
  18. }
  19. cards.append(new_infor)
  20. print("添加成功!")
  21. def delete_card():
  22. del_name = input("请输入要删除的名字:")
  23. for person in cards:
  24. if del_name == person["name"]:
  25. cards.remove(person)
  26. print("删除成功!")
  27. break
  28. else:
  29. print("找不到要删除的人!")
  30. def update_card():
  31. name: str = input("请输入要修改的名字(只能通过名字来修改电话和住址):")
  32. for person in cards:
  33. if name == person["name"]:
  34. phone = input("请输入新的的电话(直接回车则不修改):")
  35. address = input("请输入新的的地址(直接回车则不修改):")
  36. if phone:
  37. person["phone"] = phone
  38. if address:
  39. person["address"] = address
  40. print("修改成功")
  41. break
  42. else:
  43. print("找不到要修改的人!")
  44. def find_card():
  45. """用来查询一个名片"""
  46. find_name: str = input("请输入要查询的名字(支持模糊查询):")
  47. flag: int = 1
  48. for temp in cards:
  49. # 遍历名片中的所有名字,判断要查找的名字是否存在,不存在则打印查无此人
  50. if temp["name"].find(find_name) != -1:
  51. print("%s\t%s\t%s" % (temp["name"], temp["phone"], temp["address"]))
  52. flag = 0
  53. if flag:
  54. print("查无此人")
  55. def show_all():
  56. print("姓名\t电话\t住址")
  57. for temp in cards:
  58. print("%s\t%s\t%s" % (temp["name"], temp["phone"], temp["address"]))
  1. 最后完成主函数的功能,并调用主函数
  1. def main():
  2. """"完成对整个程序的控制"""
  3. # 打印功能提示
  4. print_menu()
  5. while True:
  6. # 获取用户的选择
  7. num: str = input("请输入功能序号:")
  8. # 判断输入的是否为数字
  9. if not num.isdigit():
  10. print("请输入数字!")
  11. continue
  12. # 转换成数字类型
  13. num: int = int(num)
  14. # 增
  15. if num == 1:
  16. add_card()
  17. # 删
  18. elif num == 2:
  19. delete_card()
  20. # 改
  21. elif num == 3:
  22. update_card()
  23. # 查
  24. elif num == 4:
  25. find_card()
  26. elif num == 5:
  27. show_all()
  28. elif num == 6:
  29. break
  30. else:
  31. print("请按号输入!")
  32. print()
  33. # 调用主函数
  34. if __name__ == '__main__':
  35. main()

python案例:实现一个函数版的名片管理系统的更多相关文章

  1. Python 如何判断一个函数是generator函数?

    如何判断一个函数是否是一个特殊的 generator 函数?可以利用 isgeneratorfunction 判断: >>>from inspect import isgenerat ...

  2. python中,一个函数想使用另一个函数中的变量

    问题: 第一个函数中用到了变量a:第二个函数也想使用变量a. 解决方法: 在第一个函数中将变量a定义为全局变量,然后在第二个函数中,也写上global a即可. 示例: def func1(): gl ...

  3. python练习题-写一个函数,打印所有包含copy方法的内置对象

    代码: #encoding=utf-8for i in dir(__builtins__):    #print "i:",i    try: #这里的i是个字符串,并不能直接用d ...

  4. Python基础综合运用——搭建名片管理系统

    综合应用 —— 名片管理系统 目标 综合应用已经学习过的知识点: 变量 流程控制 函数 模块 开发 名片管理系统 系统需求 程序启动,显示名片管理系统欢迎界面,并显示功能菜单 ************ ...

  5. python基础提高演练(名片管理系统的开发)

    综合应用 —— 名片管理系统 目标 综合应用已经学习过的知识点: 变量 流程控制 函数 模块 开发 名片管理系统 系统需求 1. 程序启动,显示名片管理系统欢迎界面,并显示功能菜单 ********* ...

  6. Python学习教程(learning Python)--2.3.4Python函数返回值

    本节讨论Python函数返回值问题. Python和C语言一样,也可以在函数结束时返回一个值.但在定义自己的Python函数时,是不需要指定返回值数据类型的,这和Python不关心变量的数据类型是一致 ...

  7. Python:名片管理系统

    字符串和列表学完, 自己试着写了一个非常简单的名片管理系统, 新萌尝试, 大佬们不要喷, 修改名片的功能我偷了个懒, 因为我不知道怎么通过定义下标,然后通过下标来修改列表内的字符串 我的思路是,把用户 ...

  8. python3实现名片管理系统(文件版)

    def menu(): #首先定义功能列表函数menu() print(" 名片管理系统 V1.0 ") print("1:增加新用户") print(&quo ...

  9. Python-控制台实现简单的名片管理系统

    通过Python开发一个基于控制台的名片管理系统,具体看下图以及相关代码. cards_main.py文件中提供程序的入口 import cards_toolslx while True: # TOD ...

随机推荐

  1. Android开发-百度地图之电子围栏

    功能实现:根据经纬度创建一个坐标,判断该坐标是否在指定圆形覆盖范围内 两个计算方法,直接套用: /** * 地球半径 */private static double EARTH_RADIUS = 63 ...

  2. EPPLUS 实现excel报表数据及公式填充

    年后工作第一天,根据客户要求修善EPPLUS报表. Epplus: Epplus是一个使用Open Office XML(Xlsx)文件格式,能读写Excel 2007/2010文件的开源组件 好处很 ...

  3. [转载]nginx负载均衡+keepalived三主(多主)配置

    nginx负载均衡+keepalived三主(多主)配置 1.实验环境,实现目标三台主机分别配置nginx负载均衡对后端多台主机做转发,同时配置keepalived实现HA,保证任意主机出现故障时其他 ...

  4. Spring Bean 的装配方式

    Spring Bean 的装配方式 装配 Bean 的三种方式 一个程序中,许多功能模块都是由多个为了实现相同业务而相互协作的组件构成的.而代码之间的相互联系又势必会带来耦合.耦合是个具有两面性的概念 ...

  5. css的优先级 和 权重问题 以及 !important 优先级

    css的优先级 和 权重问题 以及 !important 优先级 css选择有多少种? 行内样式(style="") id选择器(#) class选择器(类,伪类) 元素选择器(标 ...

  6. React的Context的使用方法简介

    context 定义: Context提供了一种方式,能够让数据在组件树中传递,而不必一级一级手动传递. API : createContext(defaultValue?). 使用方法: 首先要引入 ...

  7. 关于iphone手机上点击事件不起作用

    今天调试手机端H5页面的时候,发现一个很坑的问题,绑定的点击事件不起效果,安卓上都没问题,事件能正确触发,但是在iPhone没反应. 开始觉得是写法问题,后来发现,是由于iPhone上,点击的对象,必 ...

  8. 高德网络定位之“移动WiFi识别”

    导读随着时代的发展,近10年来位置产业蓬勃发展,定位能力逐渐从低精度走向高精度,从部分场景走向泛在定位.设备和场景的丰富,使得定位技术和能力也不断的优化更新.定位能力包括GNSS.DR(航迹推算).M ...

  9. C#各版本新增加功能

    本系列文章主要整理并介绍 C# 各版本的新增功能. C# 8.0 C#8.0 于 2019年4月 随 .NET Framework 4.8 与 Visual Studio 2019 一同发布,但是当前 ...

  10. DAX 第六篇:统计函数

    统计函数用于创建聚合,对数据进行统计分析.在使用统计函数时,必须考虑到数据模型,表之间关系,数据重复等因素,一般都会搭配过滤函数实现数据的提取和分析. 统计量一般是:均值.求和.计数.最大值.最小值. ...