基于python 智能组队

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鼎上西瓜刀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值