资源简介

python学生成绩管理系统.rar

资源截图

代码片段和文件信息

#项目名称:
#项目简介:
#作   者:key
#开发时间:2020/12/15 19:28


“““
3. 从文件中取出12个裁判员为10个运动员大的分数,
2).尽量减少人为因素,组委会要求去掉第一个问题中打最高分或最低分次数排名前二的评委给每个运动员的评分,然后计算平均成绩后排名。
“““
from collections import Counter
import copy
import numpy as np

# 为了减少失误,这里采用全局变量
fpath = “dafen.txt“
# fpath = “C:/Users/Administrator/Desktop/dafen.txt“
judge = [x for x in range(1 13)]
maxl = []  # 储存打最高分的评委的次数
minl = []  # 存储打最低分的评委的次数
player = []  # 原始成绩数据
num = [‘一‘‘二‘‘三‘‘四‘‘五‘‘六‘‘七‘‘八‘‘九‘‘十‘]
# 设置样式
strx = ‘-----------------------------------------------------------------------------------------------‘
str1 = ‘------------------------------去掉最高分和最低分计算平均分-降序--------------------------------------‘
str2 = ‘------------------------------去掉打最高最低分次数最多的前2位评委-计算平均分-降序-----------------------‘
str3 = ‘------------------------------显示打最高分次数的评委-----------------------------------------------‘
str4 = ‘------------------------------显示打最低分次数的评委-----------------------------------------------‘


##### 这里之上均是使用全局变量

# 处理文本数据
with open(fpath ‘r‘) as f:  # 处理文本数据,最后返回player,maxl,minl
    countlines = 0  # 行数#这里的行数也代表了运动员的编号
    for contents in f:
        contents = contents.strip()  # 返回的是一个str类
        contents = contents.split(‘ ‘)  # 返回一个list 按照空格分割
        scorenum = len(contents)  # 这里的list大小,也就代表了一共有多少个分数
        contents = list(map(float contents))  # 转化为float类型
        player.append(contents)  # 存储运动员成绩
        l1 = list(zip(judge contents))  # 裁判员编号和打分打包成元祖
        l2 = list(list(items) for items in l1)  # 转化为list
        l2.sort(key=lambda x: x[1] reverse=True)
        # 直接这样写
        # maxl.append(l2[0][0])  # 统计最高分次数的评委
        # minl.append(l2[11][0])  # 统计最低分次数的评委
        # 会存在逻辑漏洞
        # 比如:当第四位选手的时候
        # [[4 9.2] [6 9.2] [1 9.0] [12 9.0] [3 8.3] [11 8.2] [2 7.9] [5 7.8] [10 7.7] [8 6.9]
        # [7 6.4] [9 5.8]]
        # 只会取到4号裁判,而忽略了6号裁判,所以要改用判定语句
        for i in range(12):
            if l2[i][1]!=l2[i+1][1]:
                maxl.append(l2[i][0])
                break
            else:
                maxl.append(l2[i][0])
                continue

        for i in range(11 0 -1):
            if l2[i][1] != l2[i-1][1]:
                minl.append(l2[i][0])
                break
            else:
                minl.append(l2[i][0])
                continue

# 处理最高最低分,返回最高分次数最多的2个评委 格式[[ab]]或[[a][b]]
def maxminJudge(maxmin):
    ret = []  # 返回值
    num_Count = dict(Counter(maxmin))
    value_num = max((num_Count.values()))
    print(str2)
    for i in range(1 value_num + 1):
        # filter的主要作用是通过function对iterable中的元素进行过滤,并返回一个迭代器(iterator)
        # 下文的function就是我们自己写的匿名函数
        # num_Count.get(k) == i 查看当前的k所对应的的value值是否是i
        # filter的目的就是为了过滤掉不符合条件的值,符合条件的,返回迭代器
        # 由于filter(lambda k: num_Count.get(k) == i num_Count.keys())返回的是迭代器,所以list转化
        key_list = list(filter(lambda k: num_Count.get(k) == i num_Count.keys()))
        print(“评委打出最高最低

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

    .CA....       488  2020-12-25 21:48  期末\dafen.txt

    .CA....     10238  2020-12-26 12:47  期末\期末.py

    .C.D...         0  2020-12-26 12:48  期末

----------- ---------  ---------- -----  ----

                10726                    3


评论

共有 条评论