# -*- coding: cp936 -*-
class StuInfo:
def __init__(self):
self.Stu=[{"Sno":"1","Sname":"姓名","ChineseScore":64,"MathsScore":34,"EnglishScore":94,"ComputerScore":83},
{"Sno":"2","Sname":"姓名","ChineseScore":44,"MathsScore":24,"EnglishScore":44,"ComputerScore":71},
{"Sno":"3","Sname":"姓名","ChineseScore":74,"MathsScore":35,"EnglishScore":74,"ComputerScore":93},
{"Sno":"4","Sname":"姓名","ChineseScore":94,"MathsScore":54,"EnglishScore":24,"ComputerScore":73}]
self.attribute={"Sno":"学号",
"Sname":"姓名",
"ChineseScore":"语文成绩",
"MathsScore":"数学成绩",
"EnglishScore":"英语成绩",
"ComputerScore":"计算机成绩"
}
def _add(self):
'''添加'''
singleInfo={}
for i in self.attribute:
if "Score" in i:
singleInfo[i]=int(raw_input(self.attribute[i]+"\n"))
else:
singleInfo[i]=raw_input(self.attribute[i]+"\n").strip()
self.Stu.append(singleInfo)
print "添加成功OK"
for i in singleInfo:
print i,"=",singleInfo[i]
def _del(self):
"""删除学号为Sno的记录"""
Sno=raw_input("学号:\n")
self.Stu.remove(self.__getInfo(Sno))
print "删除成功OK"
def _update(self):
"""更新数据"""
Sno=raw_input("学号\n").strip()
prefix="修改"
updateOperate={"1":"ChineseScore",
"2":"MathsScore",
"3":"EnglishScore",
"4":"ComputerScore"}
for i in updateOperate:
print i,"-->",prefix+self.attribute[updateOperate[i]]
getOperateNum=raw_input("选择操作:\n")
if getOperateNum:
getNewValue=int(raw_input("输入新的值:\n"))
record=self.__getInfo(Sno)
record[updateOperate[getOperateNum]]=getNewValue
print "修改"+record["Sname"]+"的"+str(updateOperate[getOperateNum])+"成绩=",getNewValue,"\n成功OK"
def _getInfo(self):
"""查询数据"""
while True:
print "1->学号查询 2->条件查询 3->退出"
getNum=raw_input("选择:\n")
if getNum=="1":
Sno=raw_input("学号:\n")
print filter(lambda record:record["Sno"]==Sno,self.Stu)[0]
elif getNum=="2":
print "ChineseScore 语文成绩;","MathsScore 数学成绩;","EnglishScore 英语成绩;","ComputerScore 计算机成绩;"
print "等于 ==,小于 <, 大于 >,大于等于 >=,小于等于<= ,不等于!="
print "按如下格式输入查询条件 eg: ChineseScore>=60 "
expr=raw_input("条件:\n")
Infos=self.__getInfo(expr=expr)
if Infos:
print "共%d记录"%len(Infos)
for i in Infos:
print i
else:
print "记录为空"
elif getNum=="3":
break
else:
pass
def __getInfo(self,Sno=None,expr=""):
"""查询数据
根据学号 _getInfo("111111")
根据分数 _getInfo("EnglishSorce>80")"""
if Sno:
return filter(lambda record:record["Sno"]==Sno,self.Stu)[0]
for operate in [">=",">","<=","<","==","!="]:
if operate in expr:
gradeName,value=expr.split(operate)
return filter(lambda record: eval( repr(record[gradeName.strip()])+operate+value.strip()) ,self.Stu)
return {}
def _showAll(self):
"""显示所有记录"""
for i in self.Stu:
print i
@staticmethod
def test():
"""测试"""
_StuInfo=StuInfo()
while True:
print "1->录入数据 2->修改数据 3->删除数据 4->查询数据 5->查看数据 6->退出"
t=raw_input("选择:\n")
if t=="1":
print "录入数据"
_StuInfo._add()
elif t=="2":
print "修改数据"
_StuInfo._update()
elif t=="3":
print "删除数据"
_StuInfo._del()
elif t=="4":
print "查询数据"
_StuInfo._getInfo()
elif t=="5":
print "显示所有记录"
_StuInfo._showAll()
elif t=="6":
break
else:
pass
if __name__=="__main__":
StuInfo.test()
希望本次回答对你的提问有所帮助谢谢
队列:只允许在一端进行插入操作,在另一端进行删除操作的线性表。原理运作为先进先出双端队列:具有队列和栈的属性的结构,元素可以从两端弹出,其限定插入和删除操作在表的两端进行,双端队列可以在队列任意一端入队和出队
is_empty和size方法普通的队列相同
python数据类型的区别set集合和dict字典的区别(推荐学习:Python视频教程)唯一区别: set没有对应的value值
两者都是可变类型,即不可哈希
两者的内部元素是不可变类型,即可哈希
都无索引,不可进行切片和根据索引进行的操作
set集合和pst列表的区别
相同点
– 都是可变类型
不同点
– set集合是无序且元素唯一
– set集合取得元素只能for循环,否则因为是无序的,无索引
– pst列表是有序且元素不唯一,可以根据索引进行切片
– pst列表是分离式结构的动态顺序表(是有索引的原因)
– set集合主要用于测试数据和数据的交、并、差等此类型的和去重操作
– set集合本质区别和dict字典相同
pst列表和dict字典的区别
相同点:
可变类型
可迭代
不同点:
dict字典的key必须是不可变对象
dict字典需要的存储空间大于pst列表
查询效率字典远高于列表
tuple元组和pst列表的区别
不同点:
tuple对象创建后就不可变
创建对象的方式:pst = [“元素”] tuple=(“元素”,)
相同点:
可迭代
tuple元组、字符串、数字
不可变类型(可哈希),不可以进行更改元素
元组可以包含可变类型
更多Python相关技术文章,请访问Python教程栏目进行学习!以上就是小编分享的关于python数据类型的区别的详细内容希望对大家有所帮助,更多有关python教程请关注环球青藤其它相关文章!