求一道关于学生随机抽号演讲计分系统编程的题目 没有思路TT
本帖最后由 Kongxi 于 2020-5-23 18:55 编辑设计一款用于课程大作业检查或比赛计分的软件,基本功能:
(1)设置本课程的学生总数
(2)根据本次参与的学生总数,随机抽取一个还未汇报演讲的学生的学号。
(3)每个学生汇报演讲完毕,输入该学生的得分(假设有5个评委,则需输入5个成绩)。
(4)计算该选手的得分:去掉最高分和最低分,其余的分数求平均,并显示选手序号、姓名、得分。
(5),生的成绩。
(6)对演讲过的学生作上标记,下次程序运行时不再抽取该学号。
(7)每次退出程序时(不一定一次能进行完所有的学生的汇报,可以分多次进行),将学生的序号、姓名、成绩写入文件。
(8)结束对学生成绩进行排序,显示,并按照一等奖10%、二等奖20%、三等奖30%的比例确定选手的获奖名次,并将结果写入文件保存。
没有思路T T,求助大佬们教学一下
......软.......件......
海量代码 用面对对象的做法吗? 乞 讨 代 码 的 ? 永恒的蓝色梦想 发表于 2020-5-23 15:30
乞 讨 代 码 的 ?
然也,拿到就跑路 本帖最后由 Kongxi 于 2020-5-23 17:56 编辑
wp231957 发表于 2020-5-23 17:38
然也,拿到就跑路
学校的练习题... Twilight6 发表于 2020-5-23 15:30
用面对对象的做法吗?
不是面向对象,只是设计 Kongxi 发表于 2020-5-23 17:50
不是面向对象,只是设计
就是问你是不是用 面对对象的方法啊。。。难道你意思是弄出个软件? Twilight6 发表于 2020-5-23 18:06
就是问你是不是用 面对对象的方法啊。。。难道你意思是弄出个软件?
嗯嗯 是面向对象 Kongxi 发表于 2020-5-23 18:23
嗯嗯 是面向对象
晚上帮你试着写写,以后这样的题目尽量少发,因为论坛是解决疑问的地方,不是白嫖的地方噢 Twilight6 发表于 2020-5-23 19:22
晚上帮你试着写写,以后这样的题目尽量少发,因为论坛是解决疑问的地方,不是白嫖的地方噢
好的 蟹蟹我找到了思路正在尝试编写,{:10_264:} Kongxi 发表于 2020-5-23 23:36
好的 蟹蟹我找到了思路正在尝试编写,
我正在写...emmm不知道会不会写的出来 本帖最后由 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))
result_list = []
for i in range(self.first+self.second+self.three):
if i < self.first:
string = '一等奖:'+' '.join(temp)
result_list.append(string)
elif self.first <= i < self.second:
string = '二等奖:'+' '.join(temp)
result_list.append(string)
elif self.second <= i < self.three:
string = '三等奖:'+' '.join(temp)
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()
如果帮助到你就给个最佳吧{:10_287:} ~ Twilight6 发表于 2020-5-24 00:21
有瑕疵就是不能中途中断,楼主你自己看看改改~
如果帮助到你就给个最佳吧 ~
不是,评分理由手滑了{:10_262:} Pythonnewers 发表于 2020-5-24 12:34
不是,评分理由手滑了
哈哈哈 没事
页:
[1]