学习C语言的时候经常看到各种学生管理系统,图书管理系统,既然是学习Python为何不试试Python的管理系统呢。在学习完列表,字典,还有函数之后,我认为是完全可以自主写出管理系统的。但是作为过来人,当然也知道其中的困难点。
因为数据又是又是又是列表加字典的形式噢。在刚搞定列表中字典元素的排序,现在我们来解决如何在列表中增加字典元素。

card = {}
cc = []
peple = input("请输入人名:")
peple_tel = input("请输入手机号:")
peple_qq = input('请输入QQ号:')
card['Name'] = peple
card['Tel'] = peple_tel
card['QQ'] = peple_qq
cc.append(card)

有没有同学和我一样这样尝试过呢!这样的结果会导致最后列表中所有元素的值都是最后输入的值。
这是为什么呢? 其实啊这是因为列表和字典都是可变类型,所以改变值得时候不会改变地址。所以不管你输入多少次 虽然列表中字典元素的数量增加啦,但是实际上他们都指向同一个地址。要想字典元素不被覆盖,就得有不同的地址,要不同的地址那我们就得每次增加元素时要新建一个空字典
添加元素代码如下:

def add_card(card_set):
    # peple = input("请输入人名:")
    card = {}
    while True:
        peple = input("请输入人名:")                 #当用户名存在
        flage = False
        for i in card_set:
            if peple == i['Name']:
                flage = True                        #已存在就改为True
                print("用户名已存在!!!")
                break
        if not flage:                               #不存在时判断值 flage为FALSE   退出死循环
            break
    peple_tel = input("请输入手机号:")
    peple_qq = input('请输入QQ号:')

    card['Name'] = peple
    card['Tel'] = peple_tel
    card['QQ'] = peple_qq
    card_set.append(card)
    print(card_set)

每调用一次就会重新创建一个字典元素,只需加入列表即可。
像其他的修改功能和删除等功能比较简单我就直接列出全部代码,想学习的可以自行查看。当然如果发现错误,也愿意接受各位大佬的指导,只愿共同进步。

def menu():
    card_set = []
    while True:
        print("""————————————名片管理系统————————————


                        1:添加名片
                        2:删除名片
                        3:修改名片
                        4:查询名片
                        5:显示所有名片
                        6:退出系统""")
        print("\n——————————————————————————————")
        x = int(input('请输入要进行的操作(数字)'))
        if x == 1:
            add_card( card_set)

        elif x == 2:
            delete_card(card_set)
        elif x == 3:
            change_card(card_set)
        elif x == 4:
            index_card(card_set)
        elif x == 5:
            show_card(card_set)
        elif x == 6:
            exit_sys()


def add_card(card_set):
    # peple = input("请输入人名:")
    card = {}
    while True:
        peple = input("请输入人名:")                 #当用户名存在
        flage = False
        for i in card_set:
            if peple == i['Name']:
                flage = True                        #已存在就改为True
                print("用户名已存在!!!")
                break
        if not flage:                               #不存在时判断值 flage为FALSE   退出死循环
            break
    peple_tel = input("请输入手机号:")
    peple_qq = input('请输入QQ号:')

    card['Name'] = peple
    card['Tel'] = peple_tel
    card['QQ'] = peple_qq
    card_set.append(card)
    print(card_set)


def delete_card(card_set):
    del_pel = input("请输入要删除的名字:")
    count = 0
    flag = False
    for i in card_set:
        count += 1
        print(i['Name'] , del_pel)
        if i['Name'] == del_pel:

            flag = True
            count -= 1
            break
    if flag:
        del card_set[count]
        print(card_set)
        print('删除成功!!')
    else:
        print("列表中没有这个人噢!!")


def change_card(card_set):
    change_peple = input('请输入要修改的名字:')
    for i in card_set:
        if i['Name'] == change_peple:
            peple = input("请输入人名:")
            peple_tel = input("请输入手机号:")
            peple_qq = input('请输入QQ号:')
            i['Name'] = peple
            i['Tel'] = peple_tel
            i['QQ'] = peple_qq
            break
    print(card_set)



def index_card(card_set):
    flag = False
    pel_name = input('请输入查询的名字:')
    for i in card_set:
        if i['Name'] == pel_name:
            flag = True
            print("name: {}\ttel: {}\tQQ: {}".format(i['Name'],i['Tel'],i['QQ']))
    if not flag:
        print("没有找到您的信息~~")


def show_card(card_set):
    print('序号'.ljust(5) + ' 姓名'.ljust(10) + '手机号'.ljust(15) + 'QQ'.ljust(10))
    for i in card_set:
        print(' ' + str(card_set.index(i)).ljust(5), str(i['Name']).ljust(10), str(i['Tel']).ljust(15),
              str(i['QQ']).ljust(15))


def exit_sys():
    chioce = input('亲!!你真的要退出?(Y/N)')
    if chioce == 'Y':
        exit()
    else:
        pass


menu()