测试题

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

不支持。对相同的键赋值会覆盖原来的值。>>> dict2 = {1:'one',1:'two',3:'three'}

>>> dict2

{1: 'two', 3: 'three'}

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

会创建一个新的键值对。>>> dict1 = {1:'one',2:'two',3:'three'}

>>> dict1

{1: 'one', 2: 'two', 3: 'three'}

>>> dict1[4] = ('four')

>>> dict1

{1: 'one', 2: 'two', 3: 'three', 4: 'four'}

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

字典的效率要更高一些。因为字典的原理是使用哈希算法存储,不需要使用查找算法进行匹配,时间复杂度是O(1)。

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

Python对键有要求,要求是可哈希(Hash)的对象,不能是可变类型(包括变量,列表,字典本身等)

对于值就没有任何限制,可以是Python里的任何类型。

4.请目测下边代码执行后,字典dict1的内容是什么?dict1.fromkeys((1,2,3),('one', 'two', 'three'))

dict1.fromkeys((1,3), '数字')

dict1的内容不变,保持原来的内容。>>> dict1 = {}

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

{1: ('one', 'two', 'three'), 2: ('one', 'two', 'three'), 3: ('one', 'two', 'three')}

>>> dict1.fromkeys((1,3), '数字')

{1: '数字', 3: '数字'}

>>> dict1

{}

要注意fromkeys()方法是返回一个新创建的字典。>>> dict2 = dict1.fromkeys((1,2,3),('one', 'two', 'three'))

>>> dict2

{1: ('one', 'two', 'three'), 2: ('one', 'two', 'three'), 3: ('one', 'two', 'three')}

>>> dict2 = dict1.fromkeys((1,3), '数字')

>>> dict2

{1: '数字', 3: '数字'}

>>> dict1

{}

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

>>> dict2 = dict1.copy()

>>> dict3 = dict1

>>> dict1

{1: 'one', 2: 'two', 3: 'three'}

>>> dict2

{1: 'one', 2: 'two', 3: 'three'}

>>> dict3

{1: 'one', 2: 'two', 3: 'three'}

>>> dict3[4] = 'four'

>>> dict1

{1: 'one', 2: 'two', 3: 'three', 4: 'four'}

>>> dict2

{1: 'one', 2: 'two', 3: 'three'}

>>> dict3

{1: 'one', 2: 'two', 3: 'three', 4: 'four'}

>>> dict2[4] = 'five'

>>> dict1

{1: 'one', 2: 'two', 3: 'three', 4: 'four'}

>>> dict2

{1: 'one', 2: 'two', 3: 'three', 4: 'five'}

>>> dict3

{1: 'one', 2: 'two', 3: 'three', 4: 'four'}

赋值等号是把一个字典指向内存地址而已,所以改变dict3也就是操作和dict1一样的内存。

动动手

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

'用户登录程序'

dict1 = {}

while True:

print('|---新建用户:N/n---|')

print('|---登录账号:E/e---|')

print('|---推出程序:Q/q---|')

number =input('|---请输入指令代码:')

if (number == 'N') or (number == 'n'):

key = input('请输入用户名:')

for x in range(4):

if key in dict1:

key = input('此用户名已被使用,请重新输入:')

value = input('请输入密码:')

dict1[key] = value

print('注册成功,赶紧试试登录吧^_^')

break

else:

value = input('请输入密码:', )

dict1[key] = value

print('注册成功,赶紧试试登录吧^_^')

break

continue

elif (number == 'E') or (number == 'e'):

key = input('请输入用户名:')

if key in dict1:

for x in range(3):

value = input('请输入密码:')

if dict1[key] == value:

print('欢迎进入WOLF系统,点击右上角的X结束程序!')

break

else:

if x < 2:

print('出错提示:密码错误,请您重新登录!')

continue

else:

break

continue

else:

for x in range(3):

key = input('你输入的用户名不存在,请重新输入:')

if key in dict1:

value = input('请输入密码:')

print('欢迎进入WOLF系统,点击右上角的X结束程序!')

break

else:

if x < 2:

print('不存在此用户名,请检查书写,重新输入:')

continue

continue

elif (number == 'Q') or (number == 'q'):

break

else:

print('输入错误!')

continue

Log_On()

小甲鱼python的课后题好难_小甲鱼《零基础学习Python》课后笔记(二十六):字典——当索引不好用时2...相关推荐

  1. python语言的单行注释以井号开头_推荐|零基础学习Python基础知识

    原标题:推荐|零基础学习Python基础知识 Python是一种面向对象.解释型计算机程序设计语言.语法简洁清晰,强制用空白符作为语句缩进. Python具有丰富和强大的库,又被称为胶水语言.能把其他 ...

  2. python 编程该看那些书籍_python编程入门书籍-零基础学习Python编程,这8本书必看!...

    作为一名程序员,你肯定知道Python语言,从2017年开始Python的热度就一路飙升,已经成为大量开发者推荐入门的编程语言和第二编程语言,而且Python还是人工智能的主要编程语言,受到大众的追捧 ...

  3. 小甲鱼python的课后题好难_小甲鱼零基础python课后题 P20 019函数:我的地盘听我的...

    测试题 0.如果希望在函数中修改全局变量的值,应该使用什么关键字? 答:globe 1.在嵌套函数中,如果希望在内部函数修改外部函数的局部变量,应该使用什么关键字? 答:nonlocal 2.pyth ...

  4. 初学者先学python语音好吗_献给Python初学者 零基础学习Python能学会吗

    献给Python初学者 零基础学习Python能学会吗 时间:2018-01-08     来源:零基础学习Python方法讲解 零基础学习Python能学会吗?这个问题几乎是所有初学Python的小 ...

  5. 小甲鱼python游戏代码_【小甲鱼】零基础学习python pygame 飞机大战可执行源代码...

    [实例简介] [小甲鱼]零基础学习python pygame 飞机大战可执行源代码,觉得挺有意思,故此分享. [实例截图] [核心代码] 飞机大战 └── 飞机大战 ├── bullet.py ├── ...

  6. 0基础学好python难不难_零基础学习Python难不难?Python有什么优势?

    原标题:零基础学习Python难不难?Python有什么优势? Python是一种计算机程序设计语言.首先,我们普及一下编程语言的基础知识.用任何编程语言来开发程序,都是为了让计算机干活,比如下载一个 ...

  7. python零基础实例-零基础学习Python开发练习100题实例(1)

    零基础学习Python开发练习100题实例(1) 2018-02-25 09:37:59 2864浏览 1.题目:有四个数字:1.2.3.4,能组成多少个互不相同且无重复数字的三位数?各是多少? 程序 ...

  8. python基础代码事例-零基础学习Python开发练习100题实例(2)

    零基础学习Python开发练习100题实例(2) 2018-02-26 13:11:39 1934浏览 11.题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个 ...

  9. python入门经典100题-零基础学习Python开发练习100题实例(1)

    零基础学习Python开发练习100题实例(1) 2018-02-25 09:37:59 2854浏览 1.题目:有四个数字:1.2.3.4,能组成多少个互不相同且无重复数字的三位数?各是多少? 程序 ...

最新文章

  1. 【临实战】使用 Python 处理 Nginx 日志
  2. 测试工具/PostMan
  3. 【智能语音】ROC-RK3308-CC Amazon Alexa固件发布
  4. jQuery.tablesorter html表格排序插件
  5. 下载Bootstrap3源码版本
  6. 【BZOJ2157】旅游,树链剖分练习
  7. crio电压采集 labview_基于LabVIEW和CompactRIO开发的EDM过程控制器
  8. 华为认证IE太难,先考IP好找工作吗?
  9. Why it occurs this error [The JSON value could not be converted to System.Nullable]
  10. Docker执行命令提示设备没有相对空间,无法创建,overlay2文件夹磁盘占满
  11. Java基础-对象反序列化
  12. 什么是GPU计算?阿里云国际版有没有GPU计算?-Unirech
  13. 长大后自卑的孩子,大多出自这几种家庭,别不当回事(给已经做父母或未来即将为人父母的你)
  14. 浅谈网页设计的形式美法则
  15. 本地搭建私有云盘:虚拟机安装群晖NAS 1/5
  16. DSG-RealSync Oracle数据库同步复制及容灾技术简述
  17. nodejs调用建行互联网银企被扫支付接口Java版加解密Demo
  18. 【SSL.1232】雷达覆盖(计算几何)
  19. EMD经验模态分解——分析时间序列
  20. 部门主管的管理职能:计划、组织、领导、控制

热门文章

  1. ubuntu下安装mysql
  2. SQL Server 聚集索引 clustered index 非聚集索引Nonclustered Indexes键查找查找Key Lookup执行计划过程详解
  3. qt连接mysql创建表_Qt编译mysql以及创建表后进行导入操作
  4. 安卓键盘加上数字_HHKB Professional HYBRID静电容键盘图赏
  5. 用faster-rcnn训练自己的数据集(VOC2007格式,python版)
  6. Docker与自动化测试及其测试实践
  7. Mongodb数据库连接
  8. RESTful架构详解【转】
  9. Effective C++ 条款47
  10. GLSL实现HDR Rendering 【转】