python字典(五)

字典创建

赋值创建字典
通过工厂函数创建字典
这里写图片描述
通过字典的fromkeys方法创建字典,所有元素有一个默认值
如果没有指定默认值,默认为None
这里写图片描述

应用案例: 生成多个银行卡号,并初始化密码为”000000”

# 卡号由6位组成, 前3位是610, 后面的依次是001, 002, 003...100

#!/usr/bin/env python
#coding=utf-8
cardids = []
for i in range(1, 101): # i = 1, 2, 3, 4...100
a = "610%.3d" %(i) # a= 610001, 610002, 610003, ....610100
cardids.append(a)
# print cardids # cardids是列表
print {}.fromkeys(cardids, "000000")
分析字典的特性(跟元组和列表比较)

字典不能索引和切片,因为字典是无序的数据类型;
字典不支持重复和连接;
字典支持成员操作符: 判断字典的key值是否在字典中存在; in, not in
这里写图片描述

d.update()
d.setdefault()
重点: setdefault 和 update方法的不同
update方法实现添加: key存在,覆盖value值, 否则,添加
setdefault实现添加: key存在,不覆盖value值, 否则,添加
这里写图片描述
这里写图片描述

字典名[key]=value
d.update()
这里写图片描述

查看key值;
services.keys()
services.viewkeys() # 给key起名字
services.iterkeys()
这里写图片描述
查看value值;
services.values()
查看key-value键值对;
这里写图片描述
查看key是否存在;
services.has_key(‘ftpp’)
查看指定key对应的value值;如果key不存在,不报错; 如果存在,返回value值;
services[‘ftp’] 如果key不存在,直接报错;
services.get(‘ftpp’)

d.pop(key) 删除指定key的字典元素;
d.popitem() 随机删除字典的key-value元素;
这里写图片描述
del d[key] 删除指定key的字典元素;
d.clear() 清空字典元素
这里写图片描述

循环遍历字典

默认情况下遍历字典的key值
这里写图片描述

应用1: 通过字典实现case语句

目前python不支持case语句;
实现case语句的两种方式:
if…elif…elif…else…
字典实现

# if...elif...elif...else...实现:
#coding:utf-8
"""
# 实现四则运算
- 用户分别输入第一个数字,运算操作符,第三个数字;
- 根据用户的运算操作打印出运算结果;
"""
from __future__ import division
num1 = input()
ope = raw_input()
num2 = input()
# case语句
if ope == "+":
print num1+num2
elif ope == "-":
print num1-num2
elif ope == "*":
print num1*num2
elif ope == "/":
print num1/num2
else:
print "error operator"
# 字典实现case语句
#coding:utf-8
"""
# 实现四则运算
- 用户分别输入第一个数字,运算操作符,第三个数字;
- 根据用户的运算操作打印出运算结果;
"""
from __future__ import division
num1 = input()
ope = raw_input()
num2 = input()
d = {
"+" : num1+num2,
"-" : num1-num2,
"*" : num1*num2,
"/" : num1/num2,
} i
f not ope in d:
print "error operator"
else:
print d[ope]
应用2:用户管理系统

1.注册新用户
如果注册用户已经存在,则报错;
需要填写信息: name, passwd, gender, email,age;
2.用户登录 要求同之前写的用户登录系统
3.注销用户 用户注销时,需要输入用户名和正确的用户密码
4.显示用户信息 显示系统中存在所有已经注册用户的信息;
5.退出系统

#!/usr/bin/env python
# coding:utf-8
"""
综合考察练习:
user_info = {

    'westos':{
        'username':"westos",
        "password":"",
        "gender":""
    }
}
    1. 用户名和密码分别保存在列表中;
    2. 用户登录时,判断该用户是否注册;
    2. 用户登录时,为防止黑客暴力破解, 仅有三次机会;
    3. 如果登录成功,显示登录成功(exit(), break).

"""

info = """

                       用户登录管理系统

    1. 注册新用户
    2. 用户登录
    3. 用户注销
    4. 用户信息显示
    5. 退出系统
"""

userinfo = {

    'root': {
        'name': 'root',
        'password': 'root',
        'gender': 1,
        'email': '',
        'age': 12
    },

}

gender_choice = [0, 1, 2]

def CreateUser():
    print "注册用户界面".center(100, '*')
    name = raw_input("*注册用户名:")
    if name in userinfo:
        print "用户已存在,请更换注册名"
    else:

        password = raw_input("*用户密码:")
        while True:
            gender = input("*性别(0-男 1-女 2-其他):")
            if gender in gender_choice:
                break
            else:
                print "请输入正确的选择"

        email = raw_input("用户邮箱:")
        if not email:
            email = None
        age = raw_input("年龄:")
        if not age:
            age = None
        else:
            age = int(age)
        userinfo[name] = {
            'name': name,
            'password': password,
            'gender': gender,
            'email': email,
            'age': age,
        }

        print "%s 用户注册成功!!!" % (name)

def UserLogin():
    print "用户登录界面".center(100, '*')
    trycount = 0
    while trycount < 3:
        name = raw_input("登录用户名:")
        if name not in userinfo:
            print "用户未注册"
            break
        password = raw_input("登录密码:")
        trycount += 1
        if password == userinfo[name]['password']:
            print "恭喜%s登录成功" % (name)
            break
        else:
            print "请输入正确的用户名或密码!"
    else:
        print "已登录三次,请稍后再试"


def DeleteUser():
    print "用户注销界面".center(100, '*')
    name = raw_input("注销用户名:")
    if name not in userinfo:
        print "用户未注册"
    else:
        password = raw_input("登录密码:")
        if password == userinfo[name]['password']:
            userinfo.pop(name)
            print "恭喜注销%s成功" % (name)

def UserInfo():
    for key, value in userinfo.items():
        print "用户:%s" % (key),
        print "性别:%d" % (value['gender']),
        print "邮箱:%s" % (value['email']),
        print "年龄:%s" % (value['age']),
        print "\n\n"


def main():
    while True:
        print info
        choice = raw_input("Choice:").strip()
        if choice == "1":
            CreateUser()
        elif choice == "2":
            UserLogin()
        elif choice == "3":
            DeleteUser()
        elif choice == "4":
            UserInfo()
        elif choice == "5":
            exit()
        else:
            print "输入正确的选择"

main()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值