字典创建
赋值创建字典
通过工厂函数创建字典
通过字典的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()