#显示菜单
def display_menu():
    print("-" * 30)
    print("   名片管理系统   v9")
    print("1. 添加名片")
    print("2. 删除名片")
    print("3. 修改名片")
    print("4. 查询指定名片")
    print("5. 显示所有名片信息")
    print("6. 退出系统")
    print("-" * 30)

# 获取用户输入的信息
def get_choice():
    selected_key = input("请输入选择的序号:")
    return selected_key

# 添加名片
def add_info():
    global id
    id += 1
    new_name = input("请输入姓名:")
    new_age = input("请输入年龄:")
    new_job = input("请输入工作:")
    new_phone = input("请输入联系电话:")
    #将每个人的信息存入一个字典
    card = {}
    card['编号'] = id
    card['姓名'] = new_name
    card['年龄'] = new_age
    card['工作'] = new_job
    card['联系电话'] = new_phone
    #将所有字典存入列表
    list.append(card)
    print("您新存入的信息为:")
    print(card)
    print("*请记住自己的编号")
    #方便用户看到自己刚才输入的信息,所以用输入信息的方式在此界面停留
    re = input("请输入回车键返回菜单列表...")

#删除指定名片
def del_card(del_list):
    #需要把输入的字符串类型转换成整型,不然下面的k==id无法进行判断
    id = int(input("请输入需要删除的名片编号:"))
    #定义一个计数器,如果查询玩整个列表都没有找到匹配项,那么就退回到菜单界面
    count = 0
    #定义个标记,否则必定会输出”查无此编号!“。因为无法用break跳出两层循环
    flag_1 = 0
    #遍历列表内的每个字典,按照指定的编号删除名片
    #网上查的reversed方法,如果不用这种方式遍历,则会因为列表长度的改变而报错
    for i in reversed(range(len(del_list))):
        count += 1
        k = del_list[i].get("编号","none")
        if k == id :
            #显示将要删除的信息
            print("您即将删除的信息为:\n",del_list[i])
            #确认删除
            j = 1
            while (j):
                in_content = input("是否确认删除(Y/N)?")
                if in_content == "Y" or in_content == "y":
                    del del_list[i]
                    print("执行成功!")
                    flag_1 = 1
                    j = 0
                elif in_content == "N" or in_content == "n":
                    flag_1 = 1
                    j = 0
                else:
                    print("你输入的内容有误,请重输入!")
        if count == len(del_list) and flag_1 == 0:
            print("查无此编号!")
            break
    #方便用户看到提示信息
    re = input("请输入回车键返回菜单列表...")


#修改指定名片
def modify_card(mod_list):
    #需要把输入的字符串类型转换成整型,不然下面的k==id无法进行判断
    id = int(input("请输入需要修改的名片编号:"))
    #定义一个计数器,如果查询玩整个列表都没有找到匹配项,那么就退回到菜单界面
    count = 0
    #按照指定的编号修改名片信息
    for i in range(len(mod_list)):
        count += 1
        k = mod_list[i].get("编号", "none")
        if k == id:
            new_name = input("请输入姓名:")
            new_age = input("请输入年龄:")
            new_job = input("请输入工作:")
            new_phone = input("请输入联系电话:")
            #将每个人的信息存入一个字典
            card = {}
            card['编号'] = id
            card['姓名'] = new_name
            card['年龄'] = new_age
            card['工作'] = new_job
            card['联系电话'] = new_phone
            #替换列表元素
            mod_list[i] = card
            print("您修改后的信息为:")
            print(card)
            break
        if count == len(mod_list):
            print("查无此编号!")
            break
    #方便用户看到提示信息
    re = input("请输入回车键返回菜单列表...")

#查询指定名片
def query_card(query_list):
    #需要把输入的字符串类型转换成整型,不然下面的k==id无法进行判断
    id = int(input("请输入想要查询的名片编号:"))
    #定义一个计数器,如果查询玩整个列表都没有找到匹配项,那么就退回到菜单界面
    count = 0
    # 按照指定的编号修改名片信息
    for i in range(len(query_list)):
        count += 1
        k = query_list[i].get("编号", "none")
        if k == id:
            print(query_list[i])
            break
        if count == len(query_list):
            print("查无此编号!")
            break
    #方便用户看提示信息
    re = input("请输入回车键返回菜单列表...")
# 查看所有名片的信息
def print_all_info(temp_list):
    print("=" * 30)
    for info in temp_list:
        print(info)
    print("=" * 30)
    re = input("请输入回车键返回菜单列表...")

i = 1
id = 0
list = []
while i == 1:
    # 打印菜单
    display_menu()

    # 等待用户选择
    key = get_choice()
    if key == "1":
        add_info()
    elif key == "2":
        del_card(list)
    elif key == "3":
        modify_card(list)
    elif key == "4":
        query_card(list)
    elif key == "5":
        print_all_info(list)
    elif key == "6":
        #退出系统
        exit(0)

    #没有这个判断的话,在菜单界面直接输入回车会出错误
    elif key == "\n":
        pass
    else:
        print("输入有误,请重新输入...")

有些限制还没有加上,比如姓名只接收字符串、手机号必须为11位、输入空需要重新输入等等
不过经过测试,还没有发现bug,如果有的话希望大家告知

  • 初次学习python,还有很多不足,希望大家能够指出。