高渐飞 发表于 2018-7-12 17:58:49

A-11-字典总结及练习

本帖最后由 高渐飞 于 2018-7-16 15:19 编辑

<font size="3">#知识点总结

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

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

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



#练习部分

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

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

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

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

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

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

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

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

book = {}   #建立空字典

while True:
    code = int(input('请输入相关的指令代码:'))
   
    if code == 4:
      print('|--- 感谢使用通讯录程序 ---|')
      break
   
    name = input('请输入联系人姓名:')
    if code ==2:      #插入新联系人
      flag = 0
      for each in book:       #查找用户
            if each == name:
                flag = 1      #用户在通讯录中,key为each
               
      if flag == 1:
            print('您输入的用户名在通讯录中已存在 --> ',each,':',book)
            choose = input('是否修改用户资料(YES/NO):')
            if choose == 'YES' or ' yes':
                book = input('请输入用户新联系电话:')
            else:
                  print('好的')
      else:
            phone = input('请输入联系人电话:')   #插入新联系人的联系方式
            book = phone
      
    if code ==1:      #查询联系人资料
      print(name,' : ',book)

    if code == 3:   #删除已有联系人
      flag = 0
      for each in book:
            if each == name:
                flag = 1
               
      if flag == 0:
            print('要删除的对象不存在!')
      else:
            del book    #类似列表,可以删除元素
            print(name,'已删除!')
            
    print('\n')

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

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

user = dict()   #创建新字典

while True:
    print('''
|--- 新建用户:N/n---|
|--- 登录账户:E/e---|
|--- 退出程序:Q/q---|
''')
   
    code = input('请输入指令代码:')
   
    if code == 'n' or 'N':
      ssid = input('新建用户中,请输入用户名:')
      newuser(ssid)
    elif code == 'e' or 'E':
      ssid = input('登陆账户中,请输入用户名:')
      login(ssid)
    elif code == 'q' or 'Q':
      print("感谢您的使用,欢迎再次登陆~")
      break
   
      </font>

liuzhengyuan 发表于 2018-7-12 20:26:08

高渐飞 每隔几个小时就发一个练习?

高渐飞 发表于 2018-7-12 23:15:37

liuzhengyuan 发表于 2018-7-12 20:26
高渐飞 每隔几个小时就发一个练习?

放假了,恰好有空。就看视频做练习喽
页: [1]
查看完整版本: A-11-字典总结及练习