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

要求

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

分析

  1. 首先呢,我们应该先定义一个全局变量,用于存储所有的名片信息。
cards = [{
"name": "张三",
"phone": "10086",
"address": "山西省",
}, {
"name": "李四",
"phone": "10010",
"address": "北京市",
}] # 定义一个的列表用于存放名片信息,默认里面有张三和李四的信息,方便以后调试用。
  1. 完成增加,删除,修改,查找等相关操作的函数(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"]))
  1. 最后完成主函数的功能,并调用主函数
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案例:实现一个函数版的名片管理系统的更多相关文章

  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. 《Predict Anchor Links across Social Networks via an Embedding Approach》阅读笔记

    基本信息 文献:Predict Anchor Links across Social Networks via an Embedding Approach 时间:2016 期刊:IJCAI 引言 预测 ...

  2. java截取避免空字符丢失

    1. 场景描述 数据后端是Hbase等nosql数据库,返回的数据以逗号分隔,java后端获取数据后,需要新增组装数据后再返回给前端. 2. 问题解决 2.1 问题定位 本来用的java的split进 ...

  3. java学习笔记(基础篇)—抽象与接口的区别

    抽象与接口的区别 一.抽象(abstract) 1. 抽象方法 1) 作用:定义规范 2) 抽象方法用来描述具有什么功能,但不提供实现. 3) 如果类中一个方法没有实现就要定义一个抽象方法. 2. 抽 ...

  4. mac环境下java项目无创建文件的权限

    1.问题: 先抛问题,由于刚刚换用mac环境,之前windows上开发的代码调试完毕,还未上线.之后上线部署之前,tl直连测试本地环境(mac)环境,功能无法使用,显示java.io.IOExcept ...

  5. something good

    CF292A CF304B CF383A CF409D CF409F CF632A CF652B CF656A CF656B CF656D CF659A CF678A CF697A CF735D CF ...

  6. [virtualenvwrapper] 命令小结

    创建环境 mkvirtualenv env1 mkvirtualenv env2 环境创建之后,会自动进入该目录,并激活该环境. 切换环境 workon env1 workon env2 列出已有环境 ...

  7. [leetcode]python 695. Max Area of Island

    Given a non-empty 2D array grid of 0's and 1's, an island is a group of 1's (representing land) conn ...

  8. C#中使用split分割字符串的方法小结

    string s=abcdeabcdeabcde; string[] sArray=s.Split(c) ; foreach(string i in sArray) Console.WriteLine ...

  9. HTTP_1_Web及网络基础

    Web使用一种HTTP(HyperText TransFer Protocol,超文本协议)的协议作为规范,完成从客户端到服务器等一系列运作流程.可见web是建立在HTTP协议上通信的. 通常我们使用 ...

  10. istio使用教程

    kubernetes各版本离线安装包 安装 安装k8s 强势插播广告 三步安装,不多说 安装helm, 推荐生产环境用helm安装,可以调参 release地址 如我使用的2.9.1版本 yum in ...