python函数案例名片管理器_python案例:实现一个函数版的名片管理系统

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

要求

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

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

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

分析

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

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()

原文出处:https://www.cnblogs.com/lxy0/p/11369548.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/513582.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高德 Serverless 平台建设及实践

简介: 高德为什么要搞 Serverless/Faas?是如何做 Serverless/Faas 的?技术方案是什么样的?目前进展怎么样?后续又有哪些计划?本文将和大家做一个简单的分享。 作者 | 邓学祥(祥翼) 来…

谷歌自研 Tensor 芯片,8核CPU,20核GPU……

作者 | 禾木木 出品 | CSDN云计算(ID:CSDNcloud) 10 月 20 日,谷歌在发布会上推出了全新 Pixel 6 和 Pixel 6 Pro 手机。虽然在推出之前,就已经知晓了外观,该说不说这款手机还是很吸引人的。 在这些变化…

云厂商下一块必争之地就是它了!

简介: 继容器编排、AI 工程化之后,全球顶级云厂商都瞄准了这块无人区。 作者 | 太浪 继容器编排、AI 工程化之后,全球顶级云厂商都瞄准了这块无人区。 1 回顾云计算十几年的历史,或者也可以视其为一部“为开发者服务简史”。 …

python编程中条件句_简单讲解Python编程中namedtuple类的用法

Python的Collections模块提供了不少好用的数据容器类型,其中一个精品当属namedtuple。namedtuple能够用来创建类似于元祖的数据类型,除了能够用索引来访问数据,能够迭代,更能够方便的通过属性名来访问数据。在python中&#xff0c…

shell 如何调用多个脚本

简介 这篇文章主要描述如何通过主脚本去调用其他脚本中的方法,调用的过程中可能出现哪些坑,如何避免。 目录 1. 主脚本调用其他脚本的方法 1.1. bash方法 1.2. source方法 2. 避坑技巧 2.1. 路径配置无效 2.2. source变量冲突 3. 总结 1. 主脚本调…

es对已有的索引给主键_ES中对索引的相关操作

写在前面:本文ES版本为:6.4.2(单机),并安装了head插件,运用postman进行操作。也可以使用head插件在前端浏览器中进行傻瓜式操作,后续会介绍这种方式!如果没有安装es和head插件的话,请先安装&…

“华为云-东吴杯”圆满成功,顶尖参赛者推动“智造”场景结构升级

2021年10月9日,“华为云-东吴杯”2021数字化转型创新应用大赛(以下简称“华为云-东吴杯”)的最终决赛如期上演,给来自创客赛道和企业赛道的顶尖开发者及团队搭建了一个绝佳的舞台,令其充分展示投身数字化转型领域所获得…

云原生下的灰度体系建设

简介: 本篇文章,我们将继续为大家介绍 ASI SRE(ASI,Alibaba Serverless infrastructure,阿里巴巴针对云原生应用设计的统一基础设施) 是如何探索在 Kubernetes 体系下,建设 ASI 自身基础设施在大…

引用和指针的区别都有什么_C++指针与引用的区别

指针与引用是C中两个很重要的概念,它们功能看过去很相似,就是都是间接引用某个对象,那么我们应该在什么时候使用指针,什么时候使用引用呢,下面请允许我慢慢道来:1.永远不要使用一个指向空值的引用。一个引用…

java 寻找峰值峰谷_寻找峰值

## 寻找最后的山峰# param a int整型一维数组# return int整型#class Solution:def solve(self , a ):# write code herepackage main/*** 寻找最后的山峰* param a int整型一维数组* return int整型*/func solve( a []int ) int {// write code here}/*** 寻找最后的山峰* par…

Gartner发布2022年IT十大战略预测,每家公司都是技术型公司

编辑 | 宋慧 供稿 | Gartner Gartner于今日发布对2022年及以后的十大战略预测。Gartner的十大预测从三个方面探讨了企业和IT领导人在持续中断和不确定性中获得的经验教训。这三个方面分别是:朝以人为本的方向推进、努力提高韧性以及超越期望的能力。 Gartner杰出研…

混合云K8s容器化应用弹性伸缩实战

简介: 混合云K8s容器化应用弹性伸缩实战1. 前提条件 本最佳实践的软件环境要求如下: 应用环境: ①容器服务ACK基于专有云V3.10.0版本。 ②公共云云企业网服务CEN。 ③公共云弹性伸缩组服务ESS。 配置条件: 1)使用专有云…

lodop打印不显示页码_Excel|13个Excel打印技巧汇总,打印技巧大全

打印技巧是工作必备,无需理由!很多时候大家得不到想要的打印效果,偶尔打印一两张表格,会出现各种状况:标题行不见了?打印范围错了?页眉页脚不对?打印一个内容,总得弄出一…

关于写好文章的3个心法和5点技巧

简介: 技术类文章最需要的是扎实的经验累积、深度思考和精益求精的精神,这些技巧,希望能够锦上添花。 作者 | 双宏 来源 | 阿里技术公众号 我是双宏,负责阿里巴巴内部技术人社区的内容运营,包括每天头条热文专题推荐、…

mysql 端口 telnet 不通_3306端口不通,不一定是网络的问题

今天,开发需要申请一个账号:test@192.168.84.88 。连接时报了以下错误: Warning: Using a password on the command line interface can be insecure. ERROR 2003 (HY000): Cant connect to MySQL server on 192.168.84.87 (111) 遇到连接失败,首先就是 ping 192.168.84.87…

工商银行分布式服务 C10K 场景解决方案

简介: Dubbo 是一款轻量级的开源 Java 服务框架,是众多企业在建设分布式服务架构时的首选。中国工商银行自 2014 年开始探索分布式架构转型工作,基于开源 Dubbo 自主研发了分布式服务平台。 作者 | 颜高飞 来源 | 阿里巴巴云原生公众号 Dubb…

matlab cell转数组_MATLAB批量修改文件名

评论区旁友建议使用narsort排序而不是直接修改文件名。我觉得相关条件下也可以,所以原文末尾加上了narsot排序法。以下是原文2019-05-09最近实验室小可爱帮忙做实验和记录实验数据,不过新手总有些错误操作,比方说因为忘记修改存储路径导致图片…

披荆斩棘的北森,乘风破浪的HR SaaS

“SaaS化”,这是后疫情时代非常火热的一个概念。正如同1300年但丁的《神曲》犹如一声惊雷,揭开了文艺复兴的序幕,2020年席卷而来的疫情,从某种程度上也极大地推动了全球企业对于数字化转型意识的普遍化觉醒。 数字化转型趋势催生…

mysql与oracle链接超时_数据库连接超时问题(求解)

问题出现的背景: APP框架,生产者和消费者模式,数据源配置包括mysql(mysql的分支maria DB)的数据源和oracle。 问题描述: 初始化时注册c3p0没有问题,在第一次使用数据库连接(此时创建c3p0连接池)时也没异常,…

Spring Cloud Bus 消息总线介绍

简介: 本文配套可交互教程已登录阿里云知行动手实验室,PC 端登录 start.aliyun.com 在浏览器中立即体验。 作者 | 洛夜 来源 | 阿里巴巴云原生公众号 本文配套可交互教程已登录阿里云知行动手实验室,PC 端登录 start.aliyun.com 在浏览器中立…