#字典与list同样是可变的储存方式,以键:值的方式进行表示
#字典的存储是无序的
#字典的Value可以储存任何数据
#定义一个字典
#格式 {key:value,key:value,...}
dict = {'name':'王大麻','age':18}
print(dict)
#字典当中,key不能重复,也就是不可更改.如果发生重复的情况,那么以最后的一个结果为准
dic = {'name':'李寻欢','name':'楚留香','name':'陆小凤'}
print(dic)
#字典的访问
dictionary = {'name':'杨过','Pet':'大雕','age':45}
print(dictionary['name'])#根据key获取对应的值
#print(dictionary['Sex']) 这里的Sex在字典中并没有存在,所以这里访问会报异常
#添加字典元素
dictionary['Sex'] = True #对于不存在的键,这种方式是添加
print(dictionary['Sex'])
#修改字典元素
dictionary['name'] = '小龙女' #对于存在的键,这种方式是修改
print(dictionary['name'])
#删除
del dictionary['Pet'] #删除Pet以及对应的值
print(dictionary)
dictionary.clear() #清空字典中所有的键值
print(dictionary)
del dictionary #删除字典
#print(dictionary) 因为上面将字典对象直接删除了,所以这里会报未定义异常
#字典常用的函数
#len(字典)获取字典中键的个数
dict1 = {1:'3','T':False,'Hello':'World'}
length = len(dict1)
print('length:',length)
#str(字典): 将字典转换成字符串
string = str(dict1)
#print(string['Hello']) 会发生错误,因为string是一个字符串
#type(变量) 返回一个变量对应的类型
intValue = 3
print(type(intValue))# 这里因为intValue是int类型,所以这里返回的就是'int;
print(type(dict1)) #这里因为dict1是dict类型,所以这里返回的就是'dict'
#字典常用的方法:
#clear() 清楚字典中所有的元素
#copy() 返回一个字典的浅复制
# dictTemp1 = {'name':'花花'}
# dictTemp2 = dictTemp1.copy()
# print(dictTemp2)
# dictTemp2['name'] = '大牛'
# print(dictTemp1['name'])
#keys() 获取字典中所有的key
print(dict1.keys())
#values() 获取字典中所有的value
print(dict1.values())
#items() 以list的方式返回 由键和值组成的元组组成的列表
#简单来说就是,键和值组成了元组,然后很多个元组又组成了list
listWithDict = dict1.items()
print(listWithDict)
#setdefault(key,default = Node) 如果键不存在,那么创建这个键,并且设默认值
dict1.setdefault('name','变色龙')
print(dict1)
#update(字典) 将另一个字典,更新到已有的字典中
dictT = {'sex':'男'}
dict1.update(dictT)
print(dict1)
print('name' in dict1)#判断这个键是否在dict1中
------------------------------------------------------
用字典做学生管理程序
listClass=[{'name':'王红云','age':'22','subject':'软件测试','sorce':'100'}] #定义一个序列存放字典,为了方便放了初始值
userName=passWord='' #可以不用全局变量。
loginBool=False #登录Bool
def Begin(): #定义一个开始的函数
global userName
global passWord
print('请输入你的用户名')
userName=input()
print('请输入你的密码')
passWord=input()
Login(userName,passWord)
def show(): #定义展示界面的方法
global userName #全局变量的使用
print('-----欢迎进入学生信息管理系统-----')
print(userName+'老师你好!')
print('1.添加学生信息 2.修改学生星系')
print('3.根据姓名查找学生 4.根据年龄查找学生')
print('5.根据科目查找学生 6.根据成绩查找学生')
print('7.根据姓名删除学生信息 8.显示全部信息')
print('请选择你需要的操作,如想退出请输入0')
num=int(input())
return num #返回你输入的选项
def useEx(Num): #定义一个运行方法,参数是你的选项
global loginBool
if(Num==1):
print('请输入你想添加的学生姓名,年龄,科目,成绩/输完一项信息时请按回车键再继续输入下一项信息')
addStu(input(),input(),input(),input())
shwoAllStu()
elif(Num==2):
upateStu()
elif(Num==3):
print('请输入你想查找的学生姓名')
name=input()
selectStuOfName(name)
elif(Num==4):
print('请输入你想查找的学生年龄')
age=input()
selectStuOfAge(age)
elif(Num==5):
print('请输入你想查找的学生科目')
subject=input()
selectStuOfSubject(subject)
elif(Num==6):
print('请输入你想查找的学生成绩')
sorce=input()
selectStuOfAge(sorce)
elif(Num==7):
print('请输入你想删除的学生姓名')
name=input()
delStu(name)
shwoAllStu()
elif(Num==8):
shwoAllStu()
elif(Num==0):
loginBool=False #当输入了0即选择了退出,使登录bool值变为false,即退出循环
else:
print('你是猪吗?乱输入!')
def Login(name,psword): #登录方法 这里是一个固定的帐号密码,大家可以尝试其他方法保存帐号密码来验证
global loginBool
if(name=='why' and psword=='1111'):
print('登录成功!')
loginBool=True
return loginBool
else:
print('登录失败')
return loginBool
def isEquels(EqValue): #判断输入的信息是否存在
eqBool=False
global listClass
for index in listClass:
if EqValue in index.values():
eqBool= True
return eqBool
def getValues(getValue): #通过字典里的值来显示这个学生的所有信息
global listClass
if(isEquels(getValue)):
for index in listClass:
if getValue in index.values():
print(getValue+'的学生信息:%s'%(index))
else:
print('没有检索到此信息')
def addStu(name,age,subject,sorce): #添加学生信息
global listClass
dictTemp={'name':name,'age':age,'subject':subject,'sorce':sorce}
listClass.append(dictTemp)
def upateStu(): #更新学生信息
global listClass
print('请输入你想要更新学生的姓名')
contentValue=input()
if(isEquels(contentValue)):
for index in listClass: #循环遍历序列里的字典
if contentValue in index.values(): #查找字典里是否存在输入的元素
print(index)
print('请输入你想更新哪项信息:姓名为name,年龄为age,学科为subject,分数为sorce')
updateValueIndex=input()
if(updateValueIndex=='name' or updateValueIndex=='age' or updateValueIndex=='subject' or updateValueIndex=='sorce'):
print('请输入更新后的信息')
updateValue=input()
if(updateValueIndex=='name'):
index['name']=updateValue #判断用户需要更新的key,通过key来改变里面的value
if(updateValueIndex=='age'):
index['age']=updateValue
if(updateValueIndex=='subject'):
index['subject']=updateValue
if(updateValueIndex=='sorce'):
index['sorce']=updateValue
print(index)
return
else:
print('你输入了错误的选项信息')
return
else:
print('没有这个人的信息,输入错误')
def selectStuOfName(name): #调用通过姓名查找学生的方法
getValues(name)
def selectStuOfAge(age): #调用通过年龄查找学生的方法
getValues(age)
def selectStuOfSubject(subject): #调用通过学科查找学生的方法
getValues(subject)
def selectStuOfSorce(sorce): #调用通过成绩查找学生的方法
getValues(sorce)
def delStu(name): #删除学生的方法
global listClass
if(isEquels(name)):
for index in listClass:
if name in index.values():
listClass.remove(index) #这里是序列移除元素的函数
print('删除成功')
return
else:
print('没有检索到此信息')
def shwoAllStu(): #显示全部学生信息的方法
global listClass
print(listClass)
Begin()
while(loginBool==True): #当你登录后,你要没有输入0退出,就一直在运行系统
useEx(show())