[课后作业] 第026讲:字典:当索引不好用时2 | 课后测试题

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()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值