0、python的字典是否支持一键多值?
答:不支持,相同的键再次赋值直接覆盖。
1、在字典中,如果视图为一个不存在的键赋值会怎么样?
答:会自动创建该键,并添加相应的值进去。
2、成员操作符in或者not in可以检查一个元素是否存在一个序列中,当然也可以用来检查一个键是否存在字典中,那么请问哪种的检查效率更高一些?为什么
答:字典更高效一些,因为字典的原理是使用哈希算法存储,一步到位,不需要使用其他算法进行匹配,因此效率比较高。
3、python对键和值有没有数据类型的限制?
答:python对键有要求,要求他们必须是可哈希的对象,不能是可变类型(包括变量,列表,字典本身等);对于值就没有任何限制,可以是Python里的任何类型。
4、目测下面代码。字典1的内容是什么?
#题目:
dict1.fromkeys((1,2,3),('one', 'two', 'three'))
dict1.fromkeys((1,3), '数字')
#答案:
dict1 = {}
dict1.fromkeys((1,2,3),('one', 'two', 'three'))
{1: ('one', 'two', 'three'),
2: ('one', 'two', 'three'),
3: ('one', 'two', 'three')}
dict1 = {}
dict1.fromkeys((1,3), '数字')
{1: '数字', 3: '数字'}
5、如果你需要将字典dict1={1:’one’,2:’two’,3:’three’}拷贝到dict2,你应该怎么做?
答:.copy()拷贝。
6.动动手:
0、尝试编写一个用户登录程序(尝试将功能封装成函数)
address = {}
def new_users():
prompt = '请输入用户名:'
while True:
name = input(prompt)
if name in address:
prompt = '用户名已存在,请重新输入:'
continue
else:
break
code=input('请输入密码:')
address[name]=code
print('注册成功,请登录')
def old_users():
prompt = '请输入用户名:'
while True:
name = input(prompt)
if name not in address:
prompt = '用户名不存在,请重新输入:'
continue
else:
break
code=input('请输入密码:')
password = address.get(name)
if code == password:
print('欢迎进入XX00系统,请点右上角的X结束程序!')
else:
print('密码错误!')
def showmenu():
prompt='''
|--- 新建用户:N/n ---|
|--- 登录账号:E/e ---|
|--- 退出程序:Q/q ---|
|--- 请输入指令代码:'''
while True:
chosen = False
while not chosen:
choice = input(prompt)
if choice not in 'nqeNQE':
print('指令错误,重新输入')
else:
chosen = True
def showmenu():
while True:
prompt=input('''
|--- 新建用户:N/n ---|
|--- 登录账号:E/e ---|
|--- 退出程序:Q/q ---|
|--- 请输入指令代码:''')
if prompt not in 'nqeNQE':
print('指令错误,重新输入')
if prompt == 'E'or prompt == 'e':
old_users()
if prompt == 'N'or prompt == 'n':
new_users()
if prompt == 'Q'or prompt == 'q':
break
showmenu()