# -*- coding: utf-8 -*-
"""
Created on Fri Mar 8 10:32:20 2019@author: Administrator
""""""测试题:0. Python的字典是否支持一键(Key)多值(Value)?不支持1. 在字典中,如果试图为一个不存在的键(Key)赋值会怎样?字典对象中会出现一个新的键值对2. 成员资格操作符(in和not in)可以检查一个元素是否存在序列中,当然也可以用来检查一个键(Key)是否存在字典中,那么请问哪种的检查效率更高些?为什么?检查一个键(Key)是否存在字典中的效率更高,通过查找hash值一步到位,不需要迭代或遍历3. Python对键(Key)和值(Value)有没有类型限制?对Value并没有啥限制Key必须是能hash的对象(序列类型就不行)4. 请目测下边代码执行后,字典dict1的内容是什么?
>>> dict1.fromkeys((1, 2, 3), ('one', 'two', 'three'))
>>> dict1.fromkeys((1, 3), '数字'){1:'数字',3:'数字'
}5. 如果你需要将字典dict1 = {1: 'one', 2: 'two', 3: 'three'}拷贝到dict2,你应该怎么做?"""#测试题5dict1 = {1: 'one', 2: 'two', 3: 'three'};
dict2 = dict1;
dict3 = dict1.copy();#动动手0,程序有点问题,没有检查input的输入能否为空
dict_user_password = dict({'0':'0'});
string1 = """|--- 新建用户:N/n ---|
|--- 登录账号:E/e ---|
|--- 退出程序:Q/q ---|
|--- 请输入指令代码:
""";
def ShowAndGetCmd():global string1;print(string1);return input();def add_user():global dict_user_passwordwhile True:name = input('请输入用户名:');if name in dict_user_password.keys():print('此用户已经被占用,请重新输入:')continueelse:break;password = input('请输入密码:')dict_user_password[name] = passwordprint('注册成功')def login_user():global dict_user_passwordwhile True:name = input('请输入用户名:')if name in dict_user_password.keys():break;else:print('用户名不存在,请重新输入:')continuepassword = input('请输入密码');if password == dict_user_password.get(name):print('密码正确');else:print('密码错误');while True:input_cmd = ShowAndGetCmd()if input_cmd == 'N' or input_cmd == 'n':add_user();elif input_cmd == 'E' or input_cmd == 'e':login_user();elif input_cmd == 'Q' or input_cmd == 'q':break ;else:print('指令输入有误!')