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個半月了。很多知識雖然都知道,但還是要通過一些程序來練練手,加強自己動手能力,其次也能達到一個溫故而知新的效果。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM