08.py
# 1、现将学生信息录入系统,学生信息有学号,姓名和身高
# 2、组队规则是,每一个队的相同人数,而且平均身高不能相差太大
# 3、最后将智能组队的信息显示出来
import operator
class Stu:
def __init__(self,no,name,hig):
self.no = no
self.name = name
self.hig = hig
def to_order_list(stus):
#先对列表进行低到高的排序
cmpfun = operator.attrgetter('hig') # 参数为排序依据的属性,可以有多个,这里优先id,使用时按需求改换参数即可
stus.sort(key=cmpfun) # 使用时改变列表名即可
def get_grouping(stus, n):
try:
a = len(stus) % n
if a == 0:
rs = []
for i in range(0, n):
s = []
for j in range(i, len(stus),n):
s.append(stus[j])
rs.append(s)
i = 1
for tem in rs:
print("==========第%s组=============" % (i))
i = i+1
print("学号 姓名 身高")
for st in tem:
print("%s %s %s" % (st.no,st.name,st.hig))
else:
print("分组人数不一致,请重新分组")
except ValueError:
print("分组有问题!!")
if __name__ == '__main__':
f = True
stu_list = []
while f:
no = input("请输入学号:")
name = input("请输入姓名:")
sc = float(input("请输入身高:"))
s = Stu(no, name, sc)
stu_list.append(s)
a = input("是否继续输入(n:结束)")
if a == 'n':
f = False
order_list = to_order_list(stu_list)
print("-----------------分组情况----------------------")
print(get_grouping(stu_list,2))
print("---------------------------------------------")