MyException - 我的异常网
当前位置:我的异常网» Perl/Python » Python-列表嵌套字典-名信片管理系统(适合刚学习完

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

www.MyException.Cn  网友分享于:2013-09-19  浏览:0次
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\t%s\t%s\t%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("姓名\tQQ\t微信\t住址\t")
88             for temp in card_infors:
89                 print('%s\t%s\t%s\t%s\t' % (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个半月了。很多知识虽然都知道,但还是要通过一些程序来练练手,加强自己动手能力,其次也能达到一个温故而知新的效果。

 

文章评论

Java 与 .NET 的平台发展之争
Java 与 .NET 的平台发展之争
中美印日四国程序员比较
中美印日四国程序员比较
2013年中国软件开发者薪资调查报告
2013年中国软件开发者薪资调查报告
程序员周末都喜欢做什么?
程序员周末都喜欢做什么?
程序员的一天:一寸光阴一寸金
程序员的一天:一寸光阴一寸金
我跳槽是因为他们的显示器更大
我跳槽是因为他们的显示器更大
科技史上最臭名昭著的13大罪犯
科技史上最臭名昭著的13大罪犯
总结2014中国互联网十大段子
总结2014中国互联网十大段子
老美怎么看待阿里赴美上市
老美怎么看待阿里赴美上市
当下全球最炙手可热的八位少年创业者
当下全球最炙手可热的八位少年创业者
 程序员的样子
程序员的样子
什么才是优秀的用户界面设计
什么才是优秀的用户界面设计
做程序猿的老婆应该注意的一些事情
做程序猿的老婆应该注意的一些事情
我的丈夫是个程序员
我的丈夫是个程序员
程序员最害怕的5件事 你中招了吗?
程序员最害怕的5件事 你中招了吗?
10个调试和排错的小建议
10个调试和排错的小建议
要嫁就嫁程序猿—钱多话少死的早
要嫁就嫁程序猿—钱多话少死的早
看13位CEO、创始人和高管如何提高工作效率
看13位CEO、创始人和高管如何提高工作效率
Java程序员必看电影
Java程序员必看电影
程序猿的崛起——Growth Hacker
程序猿的崛起——Growth Hacker
编程语言是女人
编程语言是女人
亲爱的项目经理,我恨你
亲爱的项目经理,我恨你
程序员必看的十大电影
程序员必看的十大电影
60个开发者不容错过的免费资源库
60个开发者不容错过的免费资源库
程序员都该阅读的书
程序员都该阅读的书
为啥Android手机总会越用越慢?
为啥Android手机总会越用越慢?
Google伦敦新总部 犹如星级庄园
Google伦敦新总部 犹如星级庄园
不懂技术不要对懂技术的人说这很容易实现
不懂技术不要对懂技术的人说这很容易实现
鲜为人知的编程真相
鲜为人知的编程真相
2013年美国开发者薪资调查报告
2013年美国开发者薪资调查报告
初级 vs 高级开发者 哪个性价比更高?
初级 vs 高级开发者 哪个性价比更高?
程序员应该关注的一些事儿
程序员应该关注的一些事儿
程序员的鄙视链
程序员的鄙视链
如何区分一个程序员是“老手“还是“新手“?
如何区分一个程序员是“老手“还是“新手“?
10个帮程序员减压放松的网站
10个帮程序员减压放松的网站
我是如何打败拖延症的
我是如何打败拖延症的
如何成为一名黑客
如何成为一名黑客
漫画:程序员的工作
漫画:程序员的工作
“懒”出效率是程序员的美德
“懒”出效率是程序员的美德
5款最佳正则表达式编辑调试器
5款最佳正则表达式编辑调试器
那些性感的让人尖叫的程序员
那些性感的让人尖叫的程序员
十大编程算法助程序员走上高手之路
十大编程算法助程序员走上高手之路
程序员眼里IE浏览器是什么样的
程序员眼里IE浏览器是什么样的
老程序员的下场
老程序员的下场
程序员和编码员之间的区别
程序员和编码员之间的区别
一个程序员的时间管理
一个程序员的时间管理
写给自己也写给你 自己到底该何去何从
写给自己也写给你 自己到底该何去何从
Web开发人员为什么越来越懒了?
Web开发人员为什么越来越懒了?
每天工作4小时的程序员
每天工作4小时的程序员
软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有