用字典建立一个通讯录,向字典中添加和删除通讯人(名字、电话、邮箱、工作单位等),查询某个人的信息,然后输出通讯录中所有人的信息。

首先请见主函数

import test_4_tool

while True:
    # 显示功能菜单
    test_4_tool.show_menu()

    action_str = input("请选择希望执行的操作:")
    print("您选择的操作是【%s】" % action_str)

    # 1,2,3针对电话簿的操作
    if action_str in ["1", "2", "3"]:

        # 新增名片
        if action_str == "1":
            test_4_tool.new_card()

        # 显示全部
        elif action_str == "2":
            test_4_tool.show_all()

        # 查询名片
        else:
            test_4_tool.search_card()

    # 0 退出系统
    elif action_str == "0":
        print("欢迎再次使用【电话簿】")

        break
        # 如果开发程序时,不希望立刻编写分支内部的代码,可使用 pass 关键字
        # pass 关键字表示一个占位符,能够保证程序的代码结构正确
        # 程序运行时,pass 关键字不执行任何操作
        # pass

    # 当输入其他内容时,需提示用户
    else:
        print("您输入的不正确,请重新输入")

上述索引函数为 test_4_tool

# 记录所有联系人字典
card_list = []


def show_menu():

    """显示菜单"""
    print("*" * 50)
    print("欢迎使用【电话簿】")
    print("")
    print("1.新增联系人")
    print("2.显示全部联系人")
    print("3.搜索联系人")
    print("")
    print("0.退出系统")
    print("*" * 50)


def new_card():

    """新增名片"""
    print("-" * 100)
    print("新增联系人")

    # 1.提示用户输入名片的详细信息
    name_str = input("请输入姓名:")
    phone_str = input("请输入电话:")
    index_str = input("请输入工作单位:")
    email_str = input("请输入邮箱:")

    # 2.使用用户输入的信息建立一个联系人字典
    card_dict = {"name": name_str,
                 "phone": phone_str,
                 "index": index_str,
                 "email": email_str}

    # 3.将联系人字典添加到列表中
    card_list.append(card_dict)
    for name_dict in card_list:
        print(name_dict)

    # 4.提示用户添加联系人成功
    print("添加 %s 成功!" % name_str)

    print("-" * 100)
    print()


def show_all():

    """显示所有联系人"""
    print("-" * 100)

    # 判断是否存在联系人记录,如果没有,提示用户添加联系人并返回
    if card_list:

        print("显示所有联系人")

        # 打印表头
        for name in ["Name", "Phone", "Index", "Email"]:
            print(name, end="\t\t")

        # 打印分割线
        print()
        print("-" * 100)

        # 遍历名片列表依次输出字典信息
        for card_dict in card_list:
            print("%s\t\t%s\t\t%s\t\t%s\t\t" % (card_dict["name"],
                                                card_dict["phone"],
                                                card_dict["index"],
                                                card_dict["email"],))

        print("-" * 100)
        print()

    else:
        print("当前没有任何的联系人记录,请使用新增联系人功能添加联系人!")


def search_card():

    """搜索联系人"""
    print("-" * 100)
    print("搜索联系人")

    # 1.提示用户输入要搜索的姓名
    find_name = input("请输入要搜索的姓名:")

    # 2.遍历名片列表,擦好像要搜索的姓名,如果没有找到,需要提示用户
    for card_dict in card_list:

        if card_dict["name"] == find_name:
            print("已查询,结果如下:")
            print("Name\t\tPhone\t\tIndex\t\tEmail")
            print("=" * 100)
            print("%s \t\t%s \t\t%s \t\t%s \t\t" % (card_dict["name"],
                                                    card_dict["phone"],
                                                    card_dict["index"],
                                                    card_dict["email"],))

            # 针对找到的联系人记录执行修改和删除的操作
            deal_card(card_dict)

            break

    else:

        print("很抱歉,没有查询到 %s" % find_name)

    print("-" * 100)
    print()


def deal_card(find_dict):

    """处理查找到的联系人

    :param find_dict: 查找到的联系人
    """

    action_str = input("请选择要执行的操作 "
                       "[1].修改   [2].删除   [0].返回上级菜单:")

    if action_str == "1":

        # 前为字典的修改值,后为字典原有值
        find_dict["name"] = input_card_info(find_dict["name"], "姓名(若不修改请按回车键):")
        find_dict["phone"] = input_card_info(find_dict["phone"], "电话(若不修改请按回车键):")
        find_dict["index"] = input_card_info(find_dict["index"], "工作地址(若不修改请按回车键):")
        find_dict["email"] = input_card_info(find_dict["email"], "邮箱(若不修改请按回车键):")
        print("修改联系人成功")

    elif action_str == "2":

        card_list.remove(find_dict)

        print("删除联系人成功")


def input_card_info(dict_value, tip_message):

    """输入联系人信息

    :param dict_value: 字典中原有的值
    :param tip_message: 输入的提示文字
    :return: 如果用户输入了内容,就返回内容,否则返回字典原有的值
    """

    # 1.提示用户输入内容
    result_str = input(tip_message)

    # 2.针对用户输入的的内容进行判断,如果用户输入了内容,直接返回结果
    if len(result_str) > 0:

        return result_str

    # 3.如果用户没有输入内容,则返回字典原有的值
    else:

        return dict_value
  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值