第五次上机作业

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))

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值