python简单通讯录

news2024/12/27 10:35:30

代码:

# 定义联系人类
class Contact:
    def __init__(self, name, phone, street, city, province, postcode):
        self.name = name
        self.phone = phone
        self.street = street
        self.city = city
        self.province = province
        self.postcode = postcode

    def __str__(self):
        return f"姓名:{self.name};电话:{self.phone};地址:{self.province} {self.city} {self.street},{self.postcode}"

# 定义通讯录类
class AddressBook:
    def __init__(self):
        self.contacts = []

    # 添加联系人
    def add_contact(self, contact):
        self.contacts.append(contact)
        print(f"{contact.name}已添加到通讯录。")

    # 显示所有联系人
    def show_contacts(self):
        print("所有联系人:")
        for contact in self.contacts:
            print(contact)

    # 查找联系人
    def find_contact(self, name):
        for contact in self.contacts:
            if contact.name == name:
                print(contact)
                return
        print(f"未找到姓名为{name}的联系人。")

    # 修改联系人
    def edit_contact(self, name):
        for contact in self.contacts:
            if contact.name == name:
                print(f"原信息:{contact}")
                new_name = input("请输入新姓名:")
                new_phone = input("请输入新电话:")
                new_street = input("请输入新街道:")
                new_city = input("请输入新城市:")
                new_province = input("请输入新省份:")
                new_postcode = input("请输入新邮编:")
                contact.name = new_name
                contact.phone = new_phone
                contact.street = new_street
                contact.city = new_city
                contact.province = new_province
                contact.postcode = new_postcode
                print(f"{name}的信息已更新为{contact}.")
                return
        print(f"未找到姓名为{name}的联系人。")

    # 删除联系人
    def del_contact(self, name):
        for contact in self.contacts:
            if contact.name == name:
                self.contacts.remove(contact)
                print(f"{name}已从通讯录中删除。")
                return
        print(f"未找到姓名为{name}的联系人。")

# 主程序
if __name__ == '__main__':
    address_book = AddressBook()
    while True:
        print("请选择操作:")
        print("1. 添加联系人")
        print("2. 显示所有联系人")
        print("3. 查找联系人")
        print("4. 修改联系人")
        print("5. 删除联系人")
        print("0. 退出程序")
        choice = input()
        if choice == "1":
            name = input("请输入姓名:")
            phone = input("请输入电话:")
            street = input("请输入街道:")
            city = input("请输入城市:")
            province = input("请输入省份:")
            postcode = input("请输入邮编:")
            contact = Contact(name, phone, street, city, province, postcode)
            address_book.add_contact(contact)
        elif choice == "2":
            address_book.show_contacts()
        elif choice == "3":
            name = input("请输入要查找的姓名:")
            address_book.find_contact(name)
        elif choice == "4":
            name = input("请输入要修改的姓名:")
            address_book.edit_contact(name)
        elif choice == "5":
            name = input("请输入要删除的姓名:")
            address_book.del_contact(name)
        elif choice == "0":
            print("程序已退出。")
            break
        else:
            print("无效的选择,请重新输入。")结果图;

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

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

相关文章

shell编程系列(6)-使用Sort进行数据排序

文章目录 前言使用Sort命令文本排序sort命令的选项如下:基本排序对单个指定列进行排序对多个指定列进行排序删除重复的行 结语 前言 shell脚本通常用作一些自动化的操作,但是在有些场景下例如科研运算,有时候会产生大量的运算结果文件&#…

学习记录PCL-1 通过哈希表进行三维点云的虚拟格网划分

直接对整个场景的点云进行特征提取,效果很差,因此通过划分区域格网进行划分。格网划分有很多种方式,在这里尝试使用哈希表进行格网链接,后续通过在每个格网内基于点云特征进行提取。 参考博客: 点云侠的PCL 点云分块_p…

揭示堆叠自动编码器的强大功能 - 最新深度学习技术

简介 在不断发展的人工智能和机器学习领域,深度学习技术由于其处理复杂和高维数据的能力而获得了巨大的普及。在各种深度学习模型中,堆叠自动编码器[1]作为一种多功能且强大的工具脱颖而出,用于特征学习、降维和数据表示。本文探讨了堆叠式自…

影视网站影视介绍评论网站

基于Boostrap的响应式电影网站影视网站移动技术应用开发一、考核要求1、考核内容本课程的成绩主要依据平时表现、文档、答辩(设计讲解、操作演示等)等方面评定。运用所学知识,独立设计并开发一个影视介绍评论网站,具体要求如下&am…

凯旋泥巴佬正式全面亮相,Triumph TF 250-X

之前给大家曝光过凯旋将要进军越野车领域,并且发动机和车架都已经造出来了,还要去参加赛事想要获得比赛的荣誉和名次,就在今日凯旋的一台越野车TF 250-X正式亮相,售价9995美元。 这是凯旋真正意义上的第一台竞赛级越野车&#xff…

特征选择的方法:包裹法之递归特征消除

1.递归特征消除法的基本原理 递归特征消除法是一种贪婪的优化算法,致力于通过反复创建模型的方式找到性能最佳的特征子集。 首先将筛选的K个特征作为初始特征子集,开展机器学习计算得到每个特征的重要性,利用交叉验证方法得到初始特征子集的…

智慧水务系统在流域水环境规划中起到什么作用?

智慧水务系统在流域水环境规划中扮演着越来越重要的角色。作为一款集信息化、自动化、智能化、智慧化于一体的水务管理系统,智慧水务系统不仅能够提高水环境规划的效率,还能为水资源的保护和利用提供有力支持。 在流域水环境规划中,智慧水务系…

Windows10设置定时提醒

文章目录 Windows10设置定时提醒创建提醒文件新建文本文档修改文件编码和后缀双击测试 创建文件夹创建任务测试运行 Windows10设置定时提醒 创建提醒文件 新建文本文档 修改文件编码和后缀 双击测试 创建文件夹 创建任务 创建触发器 选择程序 测试运行 弹窗正常

16.Oracle数据库Row_number() over()函数排序使用方法

1.原始数据(部分) SELECT * FROM SCOTT.EMP ; 2.使用Row_number() over() 函数,排序 SELECT EMPNO,ENAME,SAL,DEPTNO,Row_number() over( order by sal) rs FROM SCOTT.EMP ; 根据工资排序并添加序号 3.使用Row_number() over() 函数,分组并排序 SELECT EMPNO,ENAME,SAL,DEPTN…

深眸科技|AI+机器视觉加速进入工业制造,成为提升智能制造必选项

随着人工智能技术的飞速发展,AI视觉与机器视觉技术正在加速进入工业制造中。机器视觉技术赋予机器新活力与新智慧,不仅让机器实现精密工作的完成,还让其能够代替部分脑力活动,具有更高的智慧与能力。 深眸科技CEO周礼表示&#x…

自动伸缩:解密HPA、VPA、CA和CPA智能调整应用大小和数量

关注【云原生百宝箱】公众号,快速掌握云原生 Kubernetes提供了多种自动伸缩机制,例如HPA(Horizontal Pod Autoscaling),可以根据不同情况动态调整Pod副本数量。此功能使 Pod 能够有效地处理当前流量,而无需…

Android启动系列之进程杀手--lmkd

本文概要 这是Android系统启动的第三篇文章,本文以自述的方式来讲解lmkd进程,通过本文您将了解到lmkd进程在安卓系统中存在的意义,以及它是如何杀进程的。(文中的代码是基于android13) 我是谁 init:“大…

P8A004-系统加固-磁盘访问权限

【预备知识】 访问权限,根据在各种预定义的组中用户的身份标识及其成员身份来限制访问某些信息项或某些控制的机制。访问控制通常由系统管理员用来控制用户访问网络资源(如服务器、目录和文件)的访问,并且通常通过向用户和组授予…

字节的“游戏心脏”,真的停止跳动了吗?

字节跳动在游戏行业的宏大叙事,终究变成了一场游戏一场梦。 近日,朝夕光年首次公开回应此前的裁员传闻,明确表示会有业务方向和组织调整,游戏业务将迎来大规模收缩,未来会更加聚焦部分创新型游戏及相关技术的探索。 …

管理类联考——写作——考点+记忆篇——论说文——记忆

文章目录 整体文字提炼/目录大纲法图像畅想/记忆宫殿法 审题立意论说文-历年真题命题类型总结 写作结构论说文-万能写作结构 分析段标题开头段结尾过渡段和措施段 整体 整体用记忆宫殿法、绘图记忆法等 文字提炼/目录大纲法 利用书本的目录、大纲,一本好书&#xff…

增加F110 付款方式的随手记录

随便记录一下,基本上有这些信息可以了 为了保持PRD与测试机一致的银行代码,需要先在DEV,QAS 改成4 外部给号 主要都是在FBZP 开户行维护-FI12_HBANK/FI12 S4hana 里面有的没有办法在FI12 维护只能去NWBC NWBC:维护银行账户并关联…

MatchPyramid实现文本匹配

引言 今天利用MatchPyramid实现文本匹配。 原论文解析→点此←。 MatchPyramid 核心思想是计算两段文本间的匹配矩阵,把它当成一个图形利用多层卷积网络提取不同层级的交互模式。 匹配矩阵是通过计算两段输入文本基本单元(比如字或词)之间相似度得到的&#xf…

Verilog 入门(三)(表达式)

文章目录 操作数操作符算术操作符关系操作符相等关系操作符逻辑操作符按位操作符条件操作符 操作数 操作数可以是以下类型中的一种: 常数参数线网寄存器位选择部分选择存储器单元函数调用 操作符 Verilog HDL中的操作符可以分为下述类型: 算术操作符…

a-select:远程搜索——防抖节流处理——基础积累

a-select:远程搜索——防抖节流处理——基础积累 效果图下拉筛选数据&#xff1a;远程搜索功能&#xff1a; 效果图 下拉筛选数据&#xff1a; <a-selectshow-searchv-model"form.jobPositionCode"placeholder"请选择岗位"style"width: 100%"…

改进LiteOS中物理内存分配算法(详细实验步骤+相关源码解读)

一、实验要求 优化TLSF算法&#xff0c;将Best-fit策略优化为Good-fit策略&#xff0c;进一步降低时间复杂度至O(1)。 优化思路&#xff1a; 1.初始化时预先为每个索引中的内存块挂上若干空闲块&#xff0c;在实际分配时避免分割&#xff08;split&#xff09;操作&#xff…