手机通讯录--课后程序(Python程序开发案例教程-黑马程序员编著-第5章-课后作业)
创始人
2024-05-31 20:07:52
0

实例2:手机通讯录

通讯录是记录了联系人姓名和联系方式的名录,手机通讯录是最常见的通讯录之一,人们可以在通讯录中通过姓名查看相关联系人的联系方式、邮箱、地址等信息,也可以在其中新增联系人,或修改、删除联系人信息。下面是一个常见通讯录的功能菜单,如图1所示。

 

图1 通讯录功能菜单

图1中的通讯录中包含6个功能,每个功能都对应一个序号,用户可根据提示“请输入功能序号”选择序号执行相应的操作,包括:

  1. 添加联系人:用户根据提示“请输入联系人的姓名:”、“请输入联系人的手机号:”、“请输入联系人的邮箱:”和“请输入联系人的地址:”分别输入联系人的姓名、手机号、邮箱和地址,输入完成后提示“保存成功”。注意,若输入的用户信息为空会提示“请输入正确信息”。
  2. 查看通讯录:按固定的格式打印通讯录每个联系人的信息。若通讯录中还没有添加过联系人,提示“通讯录无信息”。
  3. 删除联系人:用户根据提示“请输入要删除的联系人姓名:”输入联系人的姓名,若该联系人存在于通讯录中,则提示“删除成功”,否则提示“该联系人不在通讯录中”。注意,若通讯录中还没有添加过联系人,提示“通讯录无信息”。
  4. 修改联系人:用户根据提示输入要修改联系人的姓名,之后按照提示“请输入新的姓名:”、“请输入新的手机号:”、“请输入新的邮箱:”、“请输入新的地址:”、分别输入该联系人的新姓名、新手机号、新邮箱、新地址,并打印此时的通讯录信息。注意,若通讯录中还没有添加过联系人,提示“通讯录无信息”。
  5. 查找联系人:用户根据提示“请输入要查找的联系人姓名”输入联系人的姓名,若该联系人存在于通讯录中,则打印该联系人的所有信息,否则提示“该联系人不在通讯录中”。注意,若通讯录中还没有添加过联系人提示“通讯录无信息”。
  6. 退出:退出手机通讯录。

本实例要求编写程序,模拟实现如上所述的手机通讯录。

实例目标

  1. 熟练地创建字典
  2. 掌握字典的基本操作,能添加、修改、删除、查询字典中的元素

实例分析

手机通讯录通常包含多个联系人,每个联系人都包含姓名、手机号、邮箱、地址等基本信息,且这些信息之间是相互对应的,因此这里可将联系人视为包含4个键值对的字典,将通讯录视为一个包含多个字典的数组,将通讯录中新增联系人、删除联系人、修改联系人、查看联系人的功能视为字典的增删改查操作。

根据以上分析可整理出以下基本实现思路:

(1)创建一个空列表,使用该列表存储联系人信息;

(2)打印通讯录的功能菜单;

(3)创建一个空字典,使用该字典存储联系人的姓名、手机号、邮箱和地址信息。

(4)接收用户输入的功能序号,并根据输入的序号执行相应的操作:用户输入“1”执行增加字典元素的操作;用户输入“2”执行查看字典元素的操作;用户输入“3”执行删除字典的操作;用户输入“4”执行修改字典元素的操作;用户输入“5”执行查看字典元素的操作;用户输入“6”执行结束程序的操作。

代码实现

person_info = []

print("=" * 20)

print('欢迎使用通讯录:')

print("1.添加联系人")

print("2.查看通讯录")

print("3.删除联系人")

print("4.修改联系人")

print("5.查找联系人")

print("6.退出")

print("=" * 20)

while True:

    per_dict = {}

    fun_num = input('请输入功能序号:')

    if fun_num == '1':

        per_name = input('请输入联系人的姓名:')

        phone_num = input('请输入联系人的手机号:')

        per_email = input('请输入联系人的邮箱:')

        per_address = input('请输入联系人的地址:')

        # 判断输入的是否为空

        if per_name.strip() == '' or phone_num.strip() == ''

 or per_email.strip() == '' or per_address.strip() == '':

            print('请输入正确信息')

            continue

        else:

            per_dict.update({'姓名': per_name,

                                '手机号': phone_num,

                                '电子邮箱': per_email,

                                '联系地址': per_address})

            person_info.append(per_dict)  # 保存到列表中

            print('保存成功')

    elif fun_num == '2':

        if len(person_info) == 0:

            print('通讯录无信息')

        for i in person_info:

            print('--*' * 6)

            for title, info in i.items():

                print(title + ':' + info)

            print('--*' * 6)

    elif fun_num == '3':  # 删除

        if len(person_info) != 0:

            del_name = input('请输入要删除的联系人姓名:')

            for i in person_info:

                if del_name in i.values():

                    person_info.remove(i)

                    print(person_info)

                    print('删除成功')

                else:

                    print('该联系人不在通讯录中')

        else:

            print('通讯录无信息')

    elif fun_num == '4':  # 修改

        if len(person_info) != 0:

            modi_info = input('请输入要修改的联系人姓名:')

            for i in person_info:

                if modi_info in i.values():

                    # 获取所在元组在列表中的索引位置

                    index_num = person_info.index(i)

                    dict_cur_perinfo = person_info[index_num]

                    for title, info in dict_cur_perinfo.items():

                        print(title + ':' + info)

                    modi_name = input('请输入新的姓名:')

                    modi_phone = input('请输入新的手机号:')

                    modi_email = input('请输入新的邮箱:')

                    modi_address = input('请输入新的地址:')

                    dict_cur_perinfo.update(姓名= modi_name)

                    dict_cur_perinfo.update(手机号= modi_phone)

                    dict_cur_perinfo.update(电子邮箱= modi_email)

                    dict_cur_perinfo.update(联系地址= modi_address)

                    print(person_info)

        else:

            print('通讯录无信息')

    elif fun_num == '5':  # 查找

        if len(person_info) != 0:

            query_name = input('请输入要查找的联系人姓名:')

            for i in person_info:

                if query_name in i.values():

                    index_num = person_info.index(i)

                    for title, info in person_info[index_num].items():

                        print(title + ':' + info)

                    break

            else:

                print('该联系人不在通讯录中')

        else:

            print('通讯录无信息')

    elif fun_num == '6':  # 退出

        break

以上代码首先定义了一个空列表person_info,其次打印了通讯录的功能菜单,以提示用户根据序号选择相应的功能,然后创建一个保存联系人的字典per_dict,并接收用户选择的序号fun_num,最后使用if-elif-else结构处理了不同序号的功能:当fun_num为“1”时调用update()方法更新字典元素;当fun_num为“2”时调用遍历查看字典元素;当fun_num为“3”时将列表person_info中相应的字典删除;当fun_num为“4”时调用update()方法更新字典元素;当fun_num为“5”时遍历查看字典元素;当fun_num为“6”时使用break语句结束程序。

需要注意的是,为保证程序能一直保持运行,这里需要使用死循环进行控制,由用户执行退出通讯录的行为。

代码测试

运行程序,在控制台输入“1”之后的结果如下所示:

====================

欢迎使用通讯录:

1.添加联系人

2.查看通讯录

3.删除联系人

4.修改联系人

5.查找联系人

6.退出

====================

请输入功能序号:1

请输入联系人的姓名:小红

请输入联系人的手机号:123456

请输入联系人的邮箱:123456

请输入联系人的地址:北京

保存成功

在控制台输入“2”之后的结果如下所示:

请输入功能序号:2

--*--*--*--*--*--*

姓名:小红

手机号:123456

电子邮箱:123456

联系地址:北京

--*--*--*--*--*--*

在控制台输入“4”之后的结果如下所示:

请输入功能序号:4

请输入要修改的联系人姓名:小红

姓名:小红

手机号:123456

电子邮箱:123456

联系地址:北京

请输入新的姓名:小兰

请输入新的手机号:12345

请输入新的邮箱:12345@163.com

请输入新的地址:北京

[{'姓名': '小兰', '手机号': '12345', '电子邮箱': '12345@163.com', '联系地址': '北京'}]

在控制台输入“5”之后的结果如下所示:

请输入功能序号:5

请输入要查找的联系人姓名:小红

该联系人不在通讯录中

在控制台输入“3”之后的结果如下所示:

请输入功能序号:3

请输入要删除的联系人姓名:小兰

[]

删除成功

相关内容

热门资讯

安卓10系统省电不,安卓10系... 你有没有发现,自从升级到安卓10系统,手机续航能力好像大不如前了?别急,今天就来给你揭秘安卓10系统...
cm14安卓系统,深度定制与极... 你有没有发现,你的安卓手机最近是不是有点不一样了?是不是觉得系统运行得更加流畅,界面也更加美观了呢?...
平板安卓系统咋样升级,轻松实现... 你那平板安卓系统是不是有点儿卡,想给它来个升级大变身?别急,让我来给你详细说说平板安卓系统咋样升级,...
安卓原系统在哪下载,探索纯净体... 你有没有想过,为什么安卓手机那么受欢迎?那是因为它的系统——安卓原系统,它就像是一个充满活力的魔法师...
安卓系统procreate绘图... 你有没有发现,现在手机上画画变得越来越流行了?尤其是用安卓系统的手机,搭配上那个神奇的Procrea...
电视的安卓系统吗,探索安卓电视... 你有没有想过,家里的电视是不是也在悄悄地使用安卓系统呢?没错,就是那个我们手机上常用的安卓系统。今天...
苹果手机系统操作安卓,苹果iO... 你有没有发现,身边的朋友换手机的时候,总是对苹果和安卓两大阵营争论不休?今天,咱们就来聊聊这个话题,...
安卓系统换成苹果键盘,键盘切换... 你知道吗?最近我在想,要是把安卓系统的手机换成苹果的键盘,那会是怎样的体验呢?想象那是不是就像是在安...
小米操作系统跟安卓系统,深度解... 亲爱的读者们,你是否曾在手机上看到过“小米操作系统”和“安卓系统”这两个词,然后好奇它们之间有什么区...
miui算是安卓系统吗,深度定... 亲爱的读者,你是否曾在手机上看到过“MIUI”这个词,然后好奇地问自己:“这玩意儿是安卓系统吗?”今...
安卓系统开机启动应用,打造个性... 你有没有发现,每次打开安卓手机,那些应用就像小精灵一样,迫不及待地跳出来和你打招呼?没错,这就是安卓...
小米搭载安卓11系统,畅享智能... 你知道吗?最近小米的新机子可是火得一塌糊涂,而且听说它搭载了安卓11系统,这可真是让人眼前一亮呢!想...
安卓2.35系统软件,功能升级... 你知道吗?最近在安卓系统界,有个小家伙引起了不小的关注,它就是安卓2.35系统软件。这可不是什么新玩...
安卓系统设置来电拦截,轻松实现... 手机里总是突然响起那些不期而至的来电,有时候真是让人头疼不已。是不是你也想摆脱这种烦恼,让自己的手机...
专刷安卓手机系统,安卓手机系统... 你有没有想过,你的安卓手机系统是不是已经有点儿“老态龙钟”了呢?别急,别急,今天就来给你揭秘如何让你...
安卓系统照片储存位置,照片存储... 手机里的照片可是我们珍贵的回忆啊!但是,你知道吗?这些照片在安卓系统里藏得可深了呢!今天,就让我带你...
华为鸿蒙系统不如安卓,挑战安卓... 你有没有发现,最近手机圈里又掀起了一股热议?没错,就是华为鸿蒙系统和安卓系统的较量。很多人都在问,华...
安卓系统陌生电话群发,揭秘安卓... 你有没有遇到过这种情况?手机里突然冒出好多陌生的电话号码,而且还是一个接一个地打过来,简直让人摸不着...
ios 系统 安卓系统对比度,... 你有没有发现,手机的世界里,iOS系统和安卓系统就像是一对双胞胎,长得差不多,但细节上却各有各的特色...
安卓只恢复系统应用,重拾系统流... 你有没有遇到过这种情况?手机突然卡顿,或者某个应用突然罢工,你一气之下,直接开启了“恢复出厂设置”大...