• 小甲鱼Python第026讲字典:当索引不好用时2 | 课后测试题及参考答案


    0.Python字典是否支持一键(key)多值(Value)?

      不支持,对相同键再次赋值时,将会覆盖该键的上一个值。

    eg:

    1 dict1 = {1:"one",1:"数字" ,2:{"小甲鱼","小白"}}
    2 print(dict1)

    1.在字典中,如果试图为一个不存在的键(key)赋值会怎样?

      会自动创建一个对应的键,并添加相应的值进去。

    2.成员资格操作符(in ,not in)可以检查一个元素是否存在序列中,当然也可以用来检查一个键(key)费否存在字典中,那么请问哪种的检查效率更高些?为什么?

      在字典中检查键是存在比在序列中检查指定元素是否存在更高效。字典的原理:(哈希算大存储),一步到位,不需要使用查找短发进行匹配,因此时间复杂度是0(1),效率非常高。

    3.Python对键(key)和值(value)有没有什么类型要求?

      Python对于键的要求高于对值的要求,要求他们必须是可哈希(Hash)的对象,不能是可变类型(包括变量,列表,字典本身等)。

      但是python对值没有任何限制。

    4.请目测下边代码执行后,字典dict1的内容是什么?

    1 dict1 = { }
    2 dict1 = dict1.fromkeys((1,2,3),("one","two","three"))
    3 dict1 = dict1.fromkeys((1,3),"数字")
    4 print(dict1)

    >>>{1:"数字",2:"数字"}

      注意:fromkeys方法是直接创建一个新的字典,不要试图使用它修改一个原有的字典,因为它会直接无情的把整个字典给覆盖掉。

    5.如果你需要将字典dict1={1:“one”,2:“two”,3:"three"}拷贝到dict2,你应该怎么做?

    方法1:dict2 = dict1.copy()----copy过去一个不随dict1变化而变化的字典。

    方法2:dict3=dict1----通过赋值后得到的dict3会随着dict1的变化而变化,而dict1也会随着dict3的变化而变化。

    1 dict1 = {1:"one",2:"two" ,3:"three"}
    2 dict2 = dict1.copy()
    3 dict3 = dict1
    4 dict1[5]="five"
    5 dict3[4]="four"
    6 print(dict1)
    7 print(dict2)
    8 print(dict3)

    动动手:

    0.尝试编写一个用户登录程序(这次尝试将功能封装成函数),程序实现如图:

     1 user_data ={ }
     2 now_user = []
     3 
     4 def new_user():
     5     user_name = "请输入用户名:"
     6     while True:
     7         name = input(user_name)
     8         if name in user_data:
     9             user_name = name+"此用户名已被注册,请重新输入:"
    10             continue
    11         else:
    12             break
    13     password = input("请输入密码:")
    14     user_data[name] = password
    15     print("注册成功")
    16 
    17 def old_user():
    18     user_name = "请输入用户姓名:"
    19     while True:
    20         name = input(user_name)
    21         if name not in user_data:
    22             user_name = "用户名不存在,请重新输入:"
    23             continue
    24         else:
    25             break
    26     password = input("请输入密码:")
    27 # !!! 去取出name相对应的密码
    28     user_password = user_data.get(name)
    29     if password == user_password:
    30         print("欢迎进入通讯录系统,请点击右上角的标符可结束程序。")
    31         now_user.append(name)
    32     else:
    33         print("密码错误!")
    34 
    35 
    36 def showmenu():
    37     menu ='''|---新建用户:N/n ---|
    38 |---登录账号:E/e ---|
    39 |---退出程序:Q/q ---|
    40 |---请输入指令代码:
    41     '''
    42     while True:
    43         chosen = False
    44         while not chosen:
    45             choice = input(menu)
    46             if choice not in 'NnEeQq':
    47                 print("请正确输入符号:")
    48             elif choice in "Nn":
    49                 new_user()
    50             elif choice in "Ee":
    51                 old_user()
    52             elif choice in "Qq":
    53                 name = input("输入想退出的用户名:")
    54                 if name in now_user:
    55                     del name
    56                     print("已退出登录")
    57                 else:
    58                     print("该用户未登录")
    59                     break
    60 showmenu()

    腾了好久的python  又要开始了!!加油!

  • 相关阅读:
    js中级-函数封装
    js中级-11.7
    js中级-11.5
    js中级-11.2
    js中级-this
    js中级-作用域链
    10.23
    10.22
    10.19js
    10.18
  • 原文地址:https://www.cnblogs.com/IT-NXXB/p/13062577.html
Copyright © 2020-2023  润新知