鱼C论坛

 找回密码
 立即注册
查看: 2356|回复: 2

[学习笔记] A-11-字典总结及练习

[复制链接]
发表于 2018-7-12 17:58:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 高渐飞 于 2018-7-16 15:19 编辑
  1. <font size="3">#知识点总结

  2. #(1)字典由键(key)和对应值(value)成对组成,字典是Python唯一的一个映射类型;
  3. #(2)映射:指两个元素的集之间元素相互“对应”的关系,类似C中的结构体
  4. #(3)格式一般为 value[key.index("xxxx")]
  5. #(4)元组小括号(),列表中括号[],字典大括号{}
  6. #(5)字典是二维的,列表是一维的;序列是顺序索引,字典是精确索引

  7. #(6)新建dict字典的几种方法:
  8. """ a.直接用中括号{}:
  9.       i. d = {A:a,B:b}
  10.           ii. d= {}
  11.     b.使用dict
  12.       i. d = dict()
  13.       ii. d = dict(a = 'a',b = 'b')    #前面a输出时,引号会自己打
  14.       iii. d = dict( zip([list1],[list2]))
  15.       iv. d = dict({A:a,B:b})
  16.       v. d = dict(( (cuple1),(cuple2) ))  #元组字典
  17.       vi. dict里面只有一个变量    """

  18. #(7)字典dict常用方法:
  19. """ a. d.fromkeys((1,2,3),'hello')  创建三个key1,2,3,其value都是hello.默认value为none
  20.     b. d.get(key,[value])    查找,如果key在d里,返回d[key]即value;否则返回None,若传入value,此时返回value
  21.     c. d.setdefault(key,[value]) 若有key,返回其value;否则新建一个key,其值默认设置为None,有value则设置value
  22.     d. d.copy()      内存新建一个d,和直接赋值不一样,一者变另一者并不变
  23.     e. d.update(d1)  按照d2更新d,有则改变;没有则不变
  24.     f. d.pop(key)    把key里的值弹出    d.popitem(),随机弹出一个item值,实际上弹出的确实为最后一个值.
  25.     g. d[key] = value   给key赋值,如果没有key,则新建一个key再赋值
  26.     h. d.keys() d.values(),d.items(),用于遍历d的键,值,项目.
  27.     i. d.clear()   清空字典d,相当于d={}; del d[key],清除某个项   """



  28. #练习部分

  29. #1.商标与标语相对应的列表编写
  30. brand = ['李宁','TESLA']
  31. slogan = ['一切皆有可能', 'Dream and Future']
  32. print('李宁的口号是:',slogan[brand.index('李宁')])

  33. #2.字典的创建及元素的访问
  34. dict1 = {'李宁':'一切皆有可能', 'TESLA':'Dream and Future'}   #字典根据键值key来索引元素
  35. print('李宁的口号是:', dict1['李宁'])    #字典的标志为大括号{}和key与value之间的冒号
  36.                                                 
  37. dict2 = {1:'one', 2:'two', 3:'three'}   #创建新的字典
  38. print(dict2[2])       #以标号索引

  39. dict3 = {}      #创建空的字典
  40. print(dict3)

  41. #3.创建元组字典
  42. dict4 = dict( (('F',70), ('i',105), ('s',115), ('h',104), ('C',67)) )  #元组( , )
  43. print(dict4)

  44. #4.用关键字参数创建字典
  45. dict5 = dict(TESLA='Dream and Future',李宁='一切皆有可能')  #大括号搭配冒号,小括号搭配
  46. print(dict5)

  47. #5.改变字典中的对应值
  48. dict5['TESLA'] = 'Where there is a dream, there is a future'   #通过key索引
  49. print(dict5)

  50. #6. 增加字典元素
  51. dict5['耐克'] = 'Just do it'
  52. print(dict5)

  53. #7.综合练习
  54. print('''
  55. |--- 欢迎进入通讯录程序---|
  56. |--- 1:查询联系人资料  ---|
  57. |--- 2.插入新联系人    ---|
  58. |--- 3.删除已有联系人  ---|
  59. |--- 4.退出通讯录程序  ---|
  60. ''')

  61. book = {}   #建立空字典

  62. while True:
  63.     code = int(input('请输入相关的指令代码:'))
  64.    
  65.     if code == 4:
  66.         print('|--- 感谢使用通讯录程序 ---|')
  67.         break
  68.    
  69.     name = input('请输入联系人姓名:')
  70.     if code ==2:      #插入新联系人
  71.         flag = 0
  72.         for each in book:       #查找用户
  73.             if each == name:
  74.                 flag = 1        #用户在通讯录中,key为each
  75.                
  76.         if flag == 1:
  77.             print('您输入的用户名在通讯录中已存在 --> ',each,':',book[each])
  78.             choose = input('是否修改用户资料(YES/NO):')
  79.             if choose == 'YES' or ' yes':
  80.                 book[each] = input('请输入用户新联系电话:')
  81.             else:
  82.                     print('好的')
  83.         else:
  84.             phone = input('请输入联系人电话:')   #插入新联系人的联系方式
  85.             book[name] = phone
  86.         
  87.     if code ==1:      #查询联系人资料
  88.         print(name,' : ',book[name])

  89.     if code == 3:     #删除已有联系人
  90.         flag = 0
  91.         for each in book:
  92.             if each == name:
  93.                 flag = 1
  94.                
  95.         if flag == 0:
  96.             print('要删除的对象不存在!')
  97.         else:
  98.             del book[name]    #类似列表,可以删除元素
  99.             print(name,'已删除!')
  100.             
  101.     print('\n')

  102. #8.综合练习2
  103. def newuser(ssid):
  104.     while ssid in user:
  105.         ssid = input('此用户名已经被使用,请重新输入:')
  106.     user[ssid] = input('请输入密码:')  #直接修改对应值
  107.     print('注册成功,赶紧试试登录吧0.0')

  108. def login(ssid):
  109.     while ssid not in user:
  110.         ssid = input('您输入的用户名不存在,请重新输入:')
  111.     psw = input('请输入密码:')
  112.     while psw != user[ssid]:      #根据键值key来索引
  113.         psw = input('密码不正确,请重新输入:')
  114.     print('登陆成功,欢迎进入XXXX系统')

  115. user = dict()   #创建新字典

  116. while True:
  117.     print('''
  118. |--- 新建用户:N/n---|
  119. |--- 登录账户:E/e---|
  120. |--- 退出程序:Q/q---|
  121. ''')
  122.    
  123.     code = input('请输入指令代码:')
  124.    
  125.     if code == 'n' or 'N':
  126.         ssid = input('新建用户中,请输入用户名:')
  127.         newuser(ssid)
  128.     elif code == 'e' or 'E':
  129.         ssid = input('登陆账户中,请输入用户名:')
  130.         login(ssid)
  131.     elif code == 'q' or 'Q':
  132.         print("感谢您的使用,欢迎再次登陆~")
  133.         break
  134.    
  135.         </font>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-7-12 20:26:08 | 显示全部楼层
高渐飞 每隔几个小时就发一个练习?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-7-12 23:15:37 | 显示全部楼层
liuzhengyuan 发表于 2018-7-12 20:26
高渐飞 每隔几个小时就发一个练习?

放假了,恰好有空。就看视频做练习喽
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-21 20:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表