零基础学习Python 作业 第26章

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

不支持,见后测试代码

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

会加入字典中(也就是创建一个Key)

>>> a['four'] = 4

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

2 成员资格运算符(in 和 not in)可以检查一个元素是否在列表中,也可以检查一个键 
(Key)是否存在字典中,哪种检查效率更高?为什么?

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

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

Python对键的要求相对严格一些,要求他们必须是可哈希的对象,不能是可变 
类型(包括变量、列表、字典本身等)

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

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

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

Answer: {1 : ‘数字’, 3 : ‘数字’} 
备注:fromkeys()是创建新的字典,不能用来修改字典!

 

5 如果你需要将字典dict1 = {1 : ‘one’, 2 : ‘two’, 3 : ‘three’}拷贝到dict2, 
你该怎么做?

# dict1 = {1 : 'one', 2 : 'two', 3 : 'three'}
# dict2 = dict1.copy()
>>> dict1 = {1 : 'one', 2 : 'two', 3 : 'three'}
>>> dict2 = dict1.copy()
>>> dict2
{1: 'one', 2: 'two', 3: 'three'}

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

# Analysis
# 拆分功能:
# 1、新建用户模块
# 2、登录模块
# 3、显示模块
# 4、字典一个

user_data = {}

def new_user():
idea = '请输入用户名: '
while True:
name = input(idea)
if name in user_data:
idea = '此用户名已经被占用,请重新输入: '
continue
else:
break

passwd = input('请输入密码: ')
user_data[name] = passwd
print('注册成功, 快试试登录吧')

def login():
idea = '请输入用户名: '
while True:
name = input(idea)
if name not in user_data:
idea = '此用户名未注册,请重新输入: '
continue
else:
break

passwd = input('请输入密码: ')
pwd = user_data.get(name)
if passwd == pwd:
print('欢迎进入系统,退出点击右上角的 x !')
else:
print('密码错误!')


def showmenu():
idea = '''
|---- 新建用户(N/n) ----|
|---- 登录账号(E/e) ----|
|---- 退出系统(Q/q) ----|
|---- 输入指令代码: '''

while True:
chosen = False
while not chosen:
choice = input(idea)
if choice not in 'NnEeQq':
print('你输入的指令代码错误,请重新输入!')
continue
else:
chosen = True

if choice == 'q' or choice == 'Q':
break
if choice == 'n' or choice == 'N':
new_user()
if choice == 'e' or choice == 'E':
login()

showmenu()

# Result

|---- 新建用户(N/n) ----|
|---- 登录账号(E/e) ----|
|---- 退出系统(Q/q) ----|
|---- 输入指令代码: N
请输入用户名: Jay
请输入密码: 123456
注册成功, 快试试登录吧

|---- 新建用户(N/n) ----|
|---- 登录账号(E/e) ----|
|---- 退出系统(Q/q) ----|
|---- 输入指令代码: N
请输入用户名: Lisa
请输入密码: 123456
注册成功, 快试试登录吧

|---- 新建用户(N/n) ----|
|---- 登录账号(E/e) ----|
|---- 退出系统(Q/q) ----|
|---- 输入指令代码: S
你输入的指令代码错误,请重新输入!

|---- 新建用户(N/n) ----|
|---- 登录账号(E/e) ----|
|---- 退出系统(Q/q) ----|
|---- 输入指令代码: n
请输入用户名: JJ
请输入密码: 123456
注册成功, 快试试登录吧

|---- 新建用户(N/n) ----|
|---- 登录账号(E/e) ----|
|---- 退出系统(Q/q) ----|
|---- 输入指令代码: E
请输入用户名: Jay
请输入密码: 123456
欢迎进入系统,退出点击右上角的 x !

|---- 新建用户(N/n) ----|

|---- 登录账号(E/e) ----|

|---- 退出系统(Q/q) ----|

|---- 输入指令代码: q

>>>

 

posted @ 2018-10-25 17:16  蘑菇慢慢  阅读(128)  评论(0)    收藏  举报