[小甲鱼] 零基础入门python第026讲课后测试题及答案:当索引不好用时2

测试题:
0.python的字典是否支持一键(key)多值(value)?
   不支持
1.在字典中,如果试图为一个不存在的键(key)赋值会怎么样?
   会增加字典项,自动创建相应的key,并添加相应的value进去
2.成员资格操作符(in和not in)可以检查一个元素是否存在序列中,当然也可以用来检查一个键(key)是否存在字典中,那么请问那种的检查效率更高些?为什么?
   检查键的效率更高些,因为字典的原理是使用哈希算法存储,一步到位,不需要使用查找算法进行匹配,因此时间复杂度是O(1),效率非常高。
3.python对键(key)和值(value)有没有类型限制?
   key不可以是不确定的值
   答案:key必须是可哈希的对象,不能使可变类型(包括变量,列表,字典等)
4.请目测下边代码执行后,字典dict1的内容是什么?

dict1.fromkeys((1,2,3),('one','two','three'))
dict1.fromkeys((1,3),'数字')

{1:('one','two','three'),2:('one','two','three'),3:('one','two','three')}
{1:'数字',3:'数字'}
注意:fromkeys是创建一个字典,而不是对原字典进行修改
5.如果你需要将字典dict1={1:'one',2:'two',3:'three'}拷贝到dict2,你应该怎么做?
   dict2=dict1.copy()
   dict2=dict2.update(dict1)
   答案:可以利用字典的copy()方法,在其他语言转移到python的小伙伴刚开始可能会习惯性的直接是使用赋值的方法(dict2=dict1),这样子做再python中只是将对象的引用拷贝过去而已
动动手:

0.尝试些一个用户登录程序(这次尝试将功能封装成函数)

user_data={}

def new_user():
    prompt='请输入用户名:'
    while true:
        name=input(prompt)
        if name in user_data:
            prompt='次用户名已经被使用,请重新输入:'
            continue
        else:
            break
    passwd=input('请输入密码:')
    user_data[name]=passwd
    print('注册成功,赶紧试试登录吧^_^')

def old_user():
    prompt='请输入用户名:'
    while true:
        name = input(prompt)
        if name not in user_data:
            prompt='您输入的用户名不存在,请重新输入:'
            continue
        else:
            break
    passwd=input('请输入密码:')
    pwd=user_data.get(name)
    if passwd == pwd:
        print('欢迎进入XXOO系统,请点击右上角的X结束程序!')
    else:
        print('密码错误!')

def shoumenu():
    prompt='''
|--- 新建用户:N/n ---|
|--- 登录账号:E/e ---|
|--- 退出程序: Q/q ---|
|--- 请输入指令代码:'''

    while true:
        chosen = false
        while not chosen:
            choice=input(prompt)
            if choice not in 'NnEeQq':
                print('您输入的指令代码错误,请重新输入:')
            else:
                chosen=true
        if choice=='q' or choice=='Q':
            break
        if choice=='n' or choice=='N':
            new_user()
        if choice=='e' or choice=='E':
            old_user()

showmenu()

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值