|
发表于 2020-5-24 00:21:50
|
显示全部楼层
本帖最后由 Twilight6 于 2020-5-24 00:23 编辑
有瑕疵就是不能中途中断,楼主你自己看看改改~
- """
- 设计一款用于课程大作业检查或比赛计分的软件,基本功能:
- (1)设置本课程的学生总数
- (2)根据本次参与的学生总数,随机抽取一个还未汇报演讲的学生的学号。
- (3)每个学生汇报演讲完毕,输入该学生的得分(假设有5个评委,则需输入5个成绩)。
- (4)计算该选手的得分:去掉最高分和最低分,其余的分数求平均,并显示选手序号、姓名、得分。
- (5),生的成绩。
- (6)对演讲过的学生作上标记,下次程序运行时不再抽取该学号。
- (7)每次退出程序时(不一定一次能进行完所有的学生的汇报,可以分多次进行),将学生的序号、姓名、成绩写入文件。
- (8)结束对学生成绩进行排序,显示,并按照一等奖10%、二等奖20%、三等奖30%的比例确定选手的获奖名次,并将结果写入文件保存。
- """
- from random import choice
- class Check:
- def __init__(self,number):
- self.first = int(number * 0.1)
- self.second = int(number * 0.2)
- self.three = int(number * 0.3)
- self.number = list(range(1,number+1))
- self.students_result = []
- def score(self):
- i = 1 ; result_list = []
- name = input('请输入该学生姓名:')
- while i <= 5:
- score = input(f'请输入第{i}位评委对该学生的评分(1~100的整数):')
- if score.isdigit() and 100 >= int(score) > 0:
- i += 1
- result_list.append(int(score))
- continue
- print('你的输入有误,请重新输入')
- result_list.remove(max(result_list))
- result_list.remove(min(result_list))
- result = sum(result_list)/3
- random_students = choice(self.number)
- self.number.remove(random_students)
- self.students_result.append('%d,%s,%d'%(random_students,name,int(result)))
- def write_file(self):
- with open('result.txt','w',encoding='utf-8') as f:
- f.write('学号,姓名,成绩\n')
- for i in self.students_result:
- f.write(i+'\n')
- print('全部写入数据库文件-result.txt中')
- def result_sort(self):
- if not self.number:
- temp = []
- for i in self.students_result:
- temp.append(tuple(i.split(',')))
- temp = sorted(temp,key = lambda x:int(x[2]))
- result_list = []
- for i in range(self.first+self.second+self.three):
- if i < self.first:
- string = '一等奖:'+' '.join(temp[i])
- result_list.append(string)
- elif self.first <= i < self.second:
- string = '二等奖:'+' '.join(temp[i])
- result_list.append(string)
- elif self.second <= i < self.three:
- string = '三等奖:'+' '.join(temp[i])
- result_list.append(string)
- with open('prize.txt','w',encoding='utf-8') as f:
- f.write('获奖等级,学号,姓名,成绩\n')
- for i in result_list:
- f.write(i+'\n')
- else:
- print('还有%d位学生没有进行演讲~'%len(self.number))
- def main():
- test = Check(10)
- while test.number:
- test.score()
- test.write_file()
- test.result_sort()
- if __name__ == '__main__':
- main()
复制代码
如果帮助到你就给个最佳吧  ~ |
评分
-
查看全部评分
|