• Python-列表嵌套字典-名片管理系统(适合刚学习完字典和列表的同学练手)


    why?我要写这个程序。这个程序是在复习字典的使用并且配合前面复习过的列表来写的一个程序。实现一个名片的管理!

    什么时候用列表什么时候用字典呢?面对这个问题我的想法是,当你存取的数据类型都是一样的时候,使用列表,当你存取的数据类型不一样时就用字典。这里说明一下数据类型不一样不是指整形或者字符型

    举个例子:如果你需要存很多人的姓名,仅仅这一个属性,就用列表来进行处理,当你要存取不仅仅是人名,包括年龄,性别,国籍等等这些信息时,这时候用字典是最合适的。

    在编写这个程序时,首先考虑2个问题:

    1、列表里面嵌套字典,怎么实现删除

    这是一个names列表。怎么实现输入姓名后,可以删除这条字典,当输入pjj,删除整个字典,再次打印names时只有后面的一条信息。

    names = [{'name':'pjj','age':18},{'name':'zy','age':20}]
    while True:
        # 删除
         del_name = input("请输入要删除的名字:")
         find_flag = False
         for line in names:
              if line['name'] ==del_name:
                   find_flag = True
                   names.remove(line)
    
         if find_flag:
              print("已删除!")
         else:
              print("输入的用户名不存在")
         print(names)
    

      

    2、列表里面嵌套字典,怎么实现修改,当输入pjj,判断pjj是否存在,如果存在则进行修改!

     1 names = [{'name':'pjj','age':18},{'name':'zy','age':20}]
     2 while True:
     3     # 修改
     4     old_name = input('请输入要修改的姓名:')
     5     flag = 0
     6     for line in names:
     7         if line['name'] == old_name:
     8             new_name = input('请输入修改的姓名:')
     9             new_age = input('请输入修改的年龄:')
    10             line['name'] = new_name
    11             line['age'] = int(new_age)
    12             flag = True
    13             break
    14     if flag:
    15         print("已修改!")
    16     else:
    17         print('输入的用户不存在!')
    18     print(names)

    解决了上述2个问题后!就开始写这个名片管理系统了!

    需求:

    当用户输入对应的序号,实现相应的功能(总共6个)

    1:添加一个新的名片
    2:删除一个名片
    3:修改一个名片
    4:查询一个名片
    5:显示所有的名片
    6:退出系统

    Code:
     1 # Author:P J J
     2 
     3 # 1打印功能提示
     4 print('=' * 50)
     5 print('名字关系系统 V2.0')
     6 print('1:添加一个新的名片')
     7 print('2:删除一个名片')
     8 print('3:修改一个名片')
     9 print('4:查询一个名片')
    10 print('5:显示所有的名片')
    11 print('6:退出系统')
    12 print('=' * 50)
    13 
    14 # 用来存储名片
    15 card_infors = []
    16 
    17 while True:
    18     # 2获取用户选择
    19     num = input('请输入操作序号:')
    20     if num.isdigit():
    21         num = int(num)
    22         if num == 1:
    23             new_name = input('请输入名字:')
    24             new_qq = input('请输入QQ:')
    25             new_weixin = input('请输入微信:')
    26             new_addr = input('请输入新的住址:')
    27 
    28             # 定义一个新的字典,用来存储一个新的名片
    29             new_infor = {}
    30             new_infor['name'] = new_name
    31             new_infor['qq'] = new_qq
    32             new_infor['weixin'] = new_weixin
    33             new_infor['addr'] = new_addr
    34 
    35             # 将一个字典,添加到列表中
    36             card_infors.append(new_infor)
    37             #print(card_infors)  # for test
    38         elif num == 2:
    39             del_name = input("请输入要删除的名字:")
    40             find_flag = False
    41             for line in card_infors:
    42                 if line['name'] == del_name:
    43                     find_flag = True
    44                     card_infors.remove(line)
    45                     break
    46             if find_flag:
    47                 print("已删除!")
    48             else:
    49                 print("输入的用户名不存在")
    50                 # print(card_infors)   for test
    51         elif num == 3:
    52             old_name = input('请输入要修改的姓名:')
    53             flag = 0
    54             for line in card_infors:
    55                 if line['name'] == old_name:
    56                     new_name = input('姓名:')
    57                     new_qq = input('年龄:')
    58                     new_weixin = input('微信:')
    59                     new_addr = input('住址:')
    60 
    61                     line['name'] = new_name
    62                     line['qq'] = new_qq
    63                     line['weixin'] = new_weixin
    64                     line['addr'] = new_addr
    65                     flag = True
    66                     break
    67             if flag:
    68                 print("已修改!")
    69             else:
    70                 print('输入的用户不存在!')
    71         elif num == 4:
    72             find_nmae = input("请输入要查找的姓名:")
    73 
    74             find_flag = 0  # 默认表示没有找到
    75 
    76             for temp in card_infors:
    77                 if find_nmae == temp['name']:
    78                     print('%s	%s	%s	%s' % (temp['name'], temp['qq'], temp['weixin'], temp['addr']))
    79                     find_flag = 1  # 表示找到了
    80                     break
    81 
    82             # 判断是否找到
    83             if find_flag == 0:
    84                 print('没有找到')
    85 
    86         elif num == 5:
    87             print("姓名	QQ	微信	住址	")
    88             for temp in card_infors:
    89                 print('%s	%s	%s	%s	' % (temp['name'], temp['qq'], temp['weixin'], temp['addr']))
    90         elif num == 6:
    91             break
    92         else:
    93             print('输入有误!请重新输入')
    94             continue
    95         print('')
    96     else:
    97         print("输入错误,请重新输入!")

    感想:

    这个程序是结合了列表、字典的增删改查来实现的!当学会了列表的增删改查后,再学会了字典的增删改查后,当两者结合时,怎么实现增删改查呢??在编写这个程序的过程中,出现了让我纠结的两个问题,就是列表里面嵌套字典怎么实现修改和删除呢!我自己新建了一个test.py,通过一个简单的列表嵌套字典实现删除和修改后才完成了这个系统!有兴趣的亲可以根据需求去练下手。如果刚刚才学完列表增删改查的同学可以看下前面一篇 Python-列表的运用-名字管理系统 加强对列表的熟悉!自己学Python也有1个半月了。很多知识虽然都知道,但还是要通过一些程序来练练手,加强自己动手能力,其次也能达到一个温故而知新的效果。

  • 相关阅读:
    linux的lsof命令
    linux find
    linux 查看磁盘空间大小
    eclipse运行时编码设置
    WebService工作原理
    Java获取字符串编码方式
    JavaScript,base64加密解密
    如何用javascript 的eval动态执行一个需要传对象参数的函数
    struts2结果类型
    执行maven-build.cmd失败
  • 原文地址:https://www.cnblogs.com/pjjo/p/7533319.html
Copyright © 2020-2023  润新知