1.基于列表,设计集合的操作模块,包括:插入一个元素;删除一个元素;一个集合是否是另一个集合的子集;求两个集合的交、并、差集。对模块里的函数进行测试。
import jihe
s=[4,'two',6,7]
s1=[1,2,'three',4,5,6]
print(jihe.Union(s,s1))
print(jihe.intersect(s,s1))
print(jihe.setdifference(s,s1))
print(jihe.add(s1,7))
if(jihe.delete(s1,4)):
print(jihe.delete(s1,4))
else:
print("未找到要删除的元素")
if(jihe.ISin(s,s1)):
print('s是s1的子集')
else:
print('s不是s1的子集')
def Union(t1,t2): #并集
result=t1[:]
for e in t2:
if(e not in t1):
result+=[e]
return result
def intersect(t1,t2): #交集
result=[]
for e in t1:
if(e in t2):
result+=[e]
return result
def ISin(t1,t2): #判断一个集合是否是另一个集合的子集
flag=1
for e in t1:
if (e not in t2):
flag=0
break
return flag
def setdifference(t1,t2):
result = []
for e in t1:
if (e in t2):
result += [e]
re=[]
for s in t1:
if(s not in result):
re+=[s]
return re
def delete(t,a):#删除一个元素
flag=0
for u in t:
if(u==a):
flag=1
if(flag==1):
result=[]
for e in t:
if(e!=a):
result+=[e]
return result
else:
#print("未找到要删除的元素")
return False
def add(t,a):
n=int(input("输入想要插入的位置:"))
result=[]
for i in range(len(t)):
if(i==n):
result+=[a]
result += [t[i]]
else:
result+=[t[i]]
return result
2.设计一个学生信息管理系统,包括如下功能:(1)键盘录入并用文件保存学生的信息,包括学生的姓名(字符串)、学号(字符串,不能重复)、成绩(浮点型数据);(2)读取学生信息到列表,然后根据学号查找并打印学生的信息;添加一条学生的记录;根据学号删除某个学生的记录;计算学生的平均成绩;按照成绩对学生的信息排序。
def writef(fname):
nameHandle=open(fname,'w')
n=int(input("输入学生总数:"))
for i in range(n):
name=input('输入学生的姓名:')
no=input('输入学生的学号:')
grade=input('输入学生的成绩:')
nameHandle.write(name+'\n')
nameHandle.write(no+'\n')
nameHandle.write(grade+'\n')
nameHandle.close()
def readf(fname):
nameHandle = open(fname, 'r')
L1=[]
L2=[]
c=0
for line in nameHandle:
L2.append(line[:-1])
c+=1
if(c==3):
L1.extend([L2])
L2=[]
c=0
return L1
def sort(L):
for i in range(1, len(L)):
for j in range(0, len(L) - i):
if (L[j][2] > L[j + 1][2]):
t = L[j]
L[j] = L[j + 1]
L[j + 1] = t
return L
def avg(L):
n=len(L)
sum=0.0
for i in range(n):
sum+=float(L[i][2])
return sum/n
def printinfor(L,Sno):
for i in range(len(L)):
if(L[i][1]==Sno):
print(L[i])
def deleteinfor(L,Sno):
result=[]
for i in range(len(L)):
if(L[i][1]!=Sno):
result+=[L[i]]
return result
def addinfor(L,l):
for i in range(len(L)):
if(L[i][1]==l[1]):
print("该学生的信息已存在")
break
else:
L.append(l)
return L
writef('学生信息管理系统')
L1=readf('学生信息管理系统')
print(sort(L1))
print(avg(L1))
printinfor(L1,'111')
print(deleteinfor(L1,'111'))
l1=['ttt','333','79.5']
print(addinfor(L1,l1))