zoukankan      html  css  js  c++  java
  • 小甲鱼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  又要开始了!!加油!

  • 相关阅读:
    解决 Mac launchpad 启动台 Gitter 图标无法删除的问题
    React 与 React-Native 使用同一个 meteor 后台
    解决 React-Native mac 运行报错 error Failed to build iOS project. We ran "xcodebuild" command but it exited with error code 65. To debug build logs further, consider building your app with Xcode.app, by ope
    一行命令更新所有 npm 依赖包
    swift学习笔记
    IOS语言总结
    focusSNS学习笔记
    别小看锤子,老罗真的很认真
    windowsphone开发页面跳转到另一个dll中的页面
    【令人振奋】【转】微软潘正磊谈DevOps、Visual Studio 2013新功能、.NET未来
  • 原文地址:https://www.cnblogs.com/IT-NXXB/p/13062577.html
Copyright © 2011-2022 走看看