# -*- 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,你应该怎么做? """ #测试题5 dict1 = {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_password while True: name = input('请输入用户名:'); if name in dict_user_password.keys(): print('此用户已经被占用,请重新输入:') continue else: break; password = input('请输入密码:') dict_user_password[name] = password print('注册成功') def login_user(): global dict_user_password while True: name = input('请输入用户名:') if name in dict_user_password.keys(): break; else: print('用户名不存在,请重新输入:') continue password = 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('指令输入有误!')