小甲鱼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  又要开始了!!加油!

原文地址:https://www.cnblogs.com/IT-NXXB/p/13062577.html