Python练习题详解之字典的内置方法(小白友好)
Python练习题详解之字典的内置方法(小白友好)
你好!欢迎来到Python练习题详解系列。为了让小白(也就是我本人)更好的理解代码,打好编程基础,我决定仔细地解说一些练习题。欢迎阅读!
首先,我们来看看字典的各种内置方法~
1. fromkeys()
fromkeys()方法用于创建并返回一个新的字典,它有两个参数:第一个参数是字典的键;第二个参数是可选的,是传入键对应的值。如果不能提供,那么默认是None。
如图,fromkeys()方法并不会把'one', 'two', 'three'分别赋值给 1、2 和 3,因为fromkeys()把('one', 'two', 'three')当成一个值了。
2. keys()、values()、items()
keys()用于返回字典中的键 key
values()用于返回字典中的所有值 value
items()用于返回字典中的所有的键和值 key + value
举个栗子:
3. get(),clear()
get()方法提供了更宽松的方式去访问字典项获取对应的值,第一个参数是一个key,当key不存在的时候,get()方法并不会报错,只是默默地返回了一个None,表示啥也没找到, 如果希望找不到数据时返回指定的值,那么可以在第二个参数设置对应的默认返回值:
如果不知道一个键是否在字典中,也可以使用成员资格操作符(in或not in)来判断。
如果需要清空一个字典,则使用clear()方法:
4. copy()
copy和赋值不一样,copy是一个浅拷贝,只拷贝表面的内容,而赋值是完完全全一样的。如下面例子所示:
5. pop()和popitem()
pop()是给定键弹出对应的值,而popitem()是弹出一个随机的项,没有顺序,因为字典是没有顺序的。
弹出来之后原来字典里的项就会消失啦。
如图:
6. setdefault()
这个关键字和get() 有点像,但是如果他找不到对应的key,不像gets一样返回一个none,而是自动把它添加进去。
7.update()
update可以用来替换旧的value,如图所示:
题目:
又到了紧张刺激的动手环节!
这次我们的要求是用函数实现一个登录的系统,run出来的结果如下:
part1:
part2:
part3:
思路:如果要用到函数的形式来写,那么我们可以把一个指令作为一个函数,初步构想应该是有3个函数,最下面的可以调用上面两个函数。
那么最下面的函数应该是print出前面的三行字,分别是新建用户,登录账号和退出程序。在最下面的函数中,让用户输入指令,如果指令为1,调用1对应的函数,如果为2,调用2对应的函数,如果为3,可以直接结束程序。
为什么要把print三行字的函数放在最后呢,因为函数调用的过程是从下往上寻找,如果交换了位置,就会报错啦。
那么现在来到了我们的前面两个函数,第一个我们就做一个新建账户的函数,在这个函数中,我们首先用成员资格操作符来判断是否有重复的用户名,语法为:如果用户输入的用户名 in 我们的字典,那么我们要说,这个用户名已经被注册了。如果没有重复的,那么我们就让用户输入密码,然后把这个用户名和密码塞进我们的字典里面。可以用到我们的set default语法,活学活用啦~
第二个函数呢,我们来做一个登录函数,
当用户输入的用户名在我们的字典里(又用到成员资格操作符啦),我们就让用户输入密码。然后我们开始判断密码正不正确,怎么判断呢?我们看看这个password 是不是等于 字典.get(用户名),如果等于,那就说登录成功,如果不等于,那就要重新输入密码啦。
而当用户名不在字典里,我们就让用户重新输入用户名,重新开始判断
所以这里会用到分支和循环~会是一个很有趣的过程。
需要注意的是,如果在一个函数里想要结束函数,虽然后面还有代码但是你不想再继续运行,这时你就可以直接用 return这条语句来结束函数。
答案:
晚安~~ 小羊小兔也该休息啦~