学习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()