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个半月了。很多知识虽然都知道,但还是要通过一些程序来练练手,加强自己动手能力,其次也能达到一个温故而知新的效果。

时间: 2024-08-03 18:07:20

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

《python基础教程(第二版)》学习笔记 字典(第4章)

<python基础教程(第二版)>学习笔记 字典(第4章)创建字典:d={'key1':'value1','key2':'value2'}lst=[('key1','value1'),('key2','value2')]; d=dict(lst)d=dict(key1='value1', key2='value2')字典基本操作:d={'key1':'value1','key2':'value2'}; len(d) ==> 2 #字典中的键值对数量d={'key1':'value1','

用Python实现简单的名片管理系统

首先新建项目,包含主程序cards_main和工具库cards_tools: 如下:main函数主主要使用while和if实现4功能切换,切换的具体操作由cards_tools中的函数执行.不说了直接上代码,代码都比较简单: (1)cards_main: * coding : UTF-8 * """File_name : cards_main.pyAuthor : jackDate : 2018.7.18Function : 名片管理系统主程序""&quo

列表中放置字典的应用:名片管理系统

在宿舍宅了一天没出门,感觉自己快要霉掉了. 明天一定要出去走走才行啊,身体是自己的. 今天总算是半抄半写的把这个名片管理系统做完了,问题依然很多,比如我竟然忘了条件里的比较要用==而不是=--低级错误 手感不够,说起来手感这东西也只有长时间持之以恒地写代码才能培养出来了,好多东西不熟悉. 算了,说说今天这个系统好了,名片管理系统,用字典保存一个人的所有信息,用列表保存字典,再用列表的相应命令实现名片系统的增删改查,也即列表中的字典的增删改查.代码如下: #1.程序说明print('$'*50)p

字典和列表结合应用:名片管理系统

依旧要先说明的是字典的增删改查: 定义一个字典: dict = {'key1':'value','key2':'value'} 增: dic['key3'] = 'xxx'  #若键不存在,将这条键值存入字典. 删: del dict['key']  #删除这条键值关系. 改: dict['key'] = xxxx    #更改key对应的value,前提是key存在的情况下. 查: dict['key']    #若key 不存在会报错. dict.get('key')  #若key存在返回v

案例:python列表嵌套字典实现备忘录

1.使用字典和列表嵌套结构表示多条记录2.添加信息时,直接输入一句话,进行解析拆解,记录时间与事件3.不同信息采用不同颜色输出 #!/user/bin/env Python # _*_ coding:utf-8 _*_ # 51memo.py # author:大宝dayday见 __author__ = '大宝dayday见' desc = '51备忘录'.center(30,'-') print(desc) welcome = 'welcome' print(f'{welcome}作者:',

[Python]名片管理系统

名片管理系统 目标 综合已经学习过的知识点 变量 流程控制 函数 模块 开发 名片管理系统 框架搭建 程序框架就是能简单运行的程序,但是这个程序还很不完善,有了基本的雏形 搭建名片管理系统框架结构 准备文件,确定文件名,保证能够在需要的位置编写代码 编写主运行循环,实现基本的用户输入和判断 文件准备 新建cards_main.py保存主程序功能代码 程序的入口 每一次启动名片管理系统都通过main这个文件启动 新建cards_tools.py保存所有名片功能函数 将对名片的新增,查询,修改,删除

Python基础(7)——名片管理系统(实现了数据简单的存储、修改、删除、查看等)

进行了一些Python基础知识的学习后,将这些知识进行综合,实现了名片管理小系统,可以进行数据的增删改查. 主要思路是将名片(信息)存进字典里,再将字典存入列表里,方便进行增删改查. 代码如下: 1 #-*-encoding:utf-8-*- 2 #用来存储名片 3 card_infors = [] # 空的列表 4 5 def print_menu(): 6 #完成打印功能菜单 7 print("="*50) 8 print(" 名片管理系统 V0.01") 9

Python练手系列之--名片管理系统

列表或字典做全局变量在函数中调用可以不用加global # 用来存储名片 card_infors = [] def print_menu(): """完成打印功能菜单""" print('=' * 50) print(' 名片管理系统函数版') print(' 1.添加一个新的名片') print(' 2.删除一个名片') print(' 3.修改一个名片') print(' 4.查询一个名片') print(' 5.显示所有名片') print

python学习笔记2—python文件类型、变量、数值、字符串、元组、列表、字典

python学习笔记2--python文件类型.变量.数值.字符串.元组.列表.字典 一.Python文件类型 1.源代码 python源代码文件以.py为扩展名,由pyton程序解释,不需要编译 [[email protected] day01]# vim 1.py #!/usr/bin/python        print 'hello world!' [[email protected] day01]# python 1.py hello world! 2.字节代码 Python源码文件