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

要求

必须使用自定义函数,完成对程序的模块化。

名片信息至少包括:姓名、电话、住址。

必须完成的功能:增、删、改、查、退出。

分析

首先呢,我们应该先定义一个全局变量,用于存储所有的名片信息。

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案例:实现一个函数版的名片管理系统相关推荐

  1. python求最值_python怎么求一个函数的最值?

    我来举个穷举法的例子. # 函数的功能为 x**2 def multi(x): y = x**2 return y # step 为尝试的步进值 def find(func, min_, max_, ...

  2. python巩固函数和模块_Python学习教程6:函数,模块和类的使用

    Python函数 定义 函数是组织好的,可重复利用的,用来实现单一,或相关联功能的代码片段. 函数能提高应用的模块行,使代码逻辑更加的条理清晰. 内建函数 内建函数是Python中自带的,可供用户重复 ...

  3. linux 从入参获取函数名字,C++ 函数名作为参数传递给另一个函数

    将函数名作为参数传递给另外一个函数(其实函数名是一个函数指针) 例1: int f1() { return 1; } int f2() { return 2; } void f(int f()) { ...

  4. #把函数当作参数传给另一个函数

    #把函数当作参数传给另一个函数: def foo(n):print(n)def bar (name):print("my name is %s" %name) # foo(bar) ...

  5. python中用函数编写程序_python编写程序,在程序中定义一个函数,计算1+1/2+1/3+1/4+……+1/n...

    python语言编写的程序需要运行库.Python(英语发音:/?pa?θ?n/),是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年发明,第一个公开发行版发行于 ...

  6. python函数调用的例子_Python案例|混用C函数

    今天,我们来解决python的速度问题.我们平时所说的Python是指在PC机上的CPython,换句话说,Python的解释器是用C语言编写的.为Python编写C扩展模块能够显著提高Python的 ...

  7. 下面属于python内置对象的有哪些_python练习题-写一个函数,打印所有包含copy方法的内置对象...

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

  8. python怎么设置回文数_python如何写一个函数判断回文数?

    python如何写一个函数判断回文数? python写一个函数判断回文数的方法: 设n是一任意自然数.若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数.例如,若n=1234321,则称 ...

  9. python分段函数编写程序_python分段函数如何编写?

    python分段函数如何编写? python编写分段函数的方法: 1.绘制分段函数:y=4sin(4πt)-sgn(t-0.3)-sgn(0.72-t) 代码: #!/usr/bin/python# ...

最新文章

  1. 2021-2027年中国室内定位市场研究及前瞻分析报告
  2. 揭晓高速公路场景下计算机视觉与交通的秘密
  3. CMake一次失败应用
  4. graphcut 用于最优缝合先寻找_Image Stitching
  5. SAE 的极致应用部署效率
  6. SQLSERVER常用函数汇总
  7. 第二十一章 刘备脱险
  8. jQuery获取div的背景颜色 How to get background color of div?
  9. Android 系统(167)----OTA升级常见问题
  10. AppServ 介绍
  11. mysql 防火墙 centos_CentOS 开启防火墙 firewall ,mysql 远程访问
  12. 百度地图移动端https 问题解决记录,也许是这个问题
  13. OpenCV开发笔记(四十七):红胖子8分钟带你深入了解直方图(图文并茂+浅显易懂+程序源码)
  14. Android椭圆offon按钮,如何使椭圆闪烁?
  15. 计算机网络实践的体会,计算机网络实训心得体会
  16. python 日历热力图_Python绘制日历图和热力图
  17. ETL工具简单操作文档
  18. 安卓java.lang.IllegalStateException: The specified child already has a parent.解决方案
  19. 市场调研—全球与中国实验室压片机市场现状及未来发展趋势
  20. 【Unity3D插件】uMOBA插件分享《Moba类游戏框架插件》

热门文章

  1. 华为万兆交换机6855堆叠
  2. 视图(view)|数据库
  3. 关于DOS界面net start MySQL 启动失败的解决办法
  4. android键值列表,Android Json不规则键值解析与转换
  5. 什么是A,C和Z频率计权?
  6. .com和.cn域名的区别所在,各个域名后缀含义
  7. bulk es 删除_分布式ES:批量操作 bulk 之 create、index、update、delete(十八)
  8. 如何显示u盘的隐藏的文件
  9. 《软件项目风险的主要来源以及如何规范》
  10. Python 入门之Python基础数据类型