【零基础】Python3学习课后练习题(二十三)

本文是跟着鱼C论坛小甲鱼零基础学习Python3的视频学习的,课后题也是跟随每一课所附属的题目来做的,根据自己的理解和标准答案记录的笔记。

 

第二十六课

 

测试题:

0.Python的字典是否支持一键(Key)多值(Value)?

答:不支持,对相同的键再次赋值会将上一次的值直接覆盖。

 

1.在字典中,如果试图为一个不存在的键(Key)赋值会怎样?

答:会创建这个新键并且赋值。

 

2.成员资格符(in和not in)可以检测一个元素是否在序列中,当然也可以用来检查一个键(Key)是否在字典中。那么请问哪种的检查效率更高些?为什么?

答:在字典中检查键(Key)是否存在比在序列中检查指定元素是否存在更高效。因为字典的原理是使用哈希算法存储,一步到位,不需要使用查找算法进行匹配,因此时间复杂度是O(1),效率非常高。

 

3.Python对键(Key)和值(Value)有没有类型限制?

答:Python对键的要求相对要严格一些,要求它们必须是可哈希(Hash)的对象,不能是可变类型(包括变量、列表、字典本身等)。但是Python对值是没有任何限制的,它们可以是任意的Python对象。

 

4.请目测下边代码执行后,字典dict1的内容是什么?

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

答:执行完成后,字典dict1的内容是:{1: '数字', 3: '数字'},这里要注意的是,fromkeys方法是直接创建一个新的字典,不要试图使用它来修改一个原有的字典,因为它会直接无情的用把整个字典给覆盖掉。

 

5.如果你需要将字典dict1 = {1: ‘one’,2: ‘two’,3: ‘three’}拷贝到dict2,你应该怎么做? 使用copy()方法。不要使用赋值等号。

答:可以利用字典的copy()方法:dict2 = dict1.copy(),在其他语言转移到Python小伙伴们刚开始可能会习惯性的直接用赋值的方法(dict2 = dict1),这样子做在Python中只是将对象的引用拷贝过去而已。

 

0.尝试编写一个用户登录程序(这次尝试将功能封装成函数),程序实现如图:

答:

def load():
    dict1 = {'小甲鱼':'FishC'}
    while 1:
        key = input('''
|--- 新建用户:N/n ---|
|--- 登录帐号:E/e ---|
|--- 退出程序:Q/q ---|
|--- 请输入指令代码:''')
        if key == 'N' or key == 'n':
            temp_name = input('请输入用户名:')
            while temp_name in dict1:
                temp_name = input('此用户名已经被使用,请重新输入:')
 
            temp_password = input('请输入密码:')
            dict1[temp_name] = temp_password
            print('注册成功,赶紧试试登录吧^_^')
            continue
 
        elif key == 'E' or key == 'e':
            temp_name = input('请输入用户名:')
            while temp_name not in dict1:
                temp_name = input('您输入的用户名不存在,请重新输入:')
            temp_password = input('请输入密码:')
            while temp_password != dict1[temp_name]:
                temp_password = input('密码错误,请重新输入:')
            print('欢迎进入系统,请点右上角的X结束程序!')
            continue
 
        elif key == 'Q' or key == 'q':
            break

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值