简易评分系统

news/2025/3/14 16:42:17/

目录

一、实验目的

二、操作环境

三、实验内容和过程

1.实验内容

2.代码

2.1 用户验证功能

2.2 菜单函数

2.3 评分功能

四、结果分析

总体的输出结果:

保存文件成功截图:

五、小结


一、实验目的

1.巩固和提高学生学过的基础理论和专业知识;

2.提高学生运用所学专业知识进行独立思考和综合分析、解决实际问题的能力;

3.培养学生掌握正确的思维方法和利用计算机解决实际问题的基本技能;

4.增强学生对信息管理工作的认识,掌握信息处理方法,进行编制技术文件等基本技能的训练,使之具有一定程度的实际工作能力。

5.使学生掌握文献检索、资料查询的基本方法以及获取新知识的能力。

6.促使学生学习和获取新知识,掌握自我学习的能力。

二、操作环境

  • win11
  • PyCharm Community Edition 2020.2.5 x64
  • anaconda2019
  • python3.7

三、实验内容和过程

1.实验内容

制作一个简易评分系统,要求完成以下功能:

1. 用户验证功能

(1)输入用户名及口令,然后在已有的用户名及口令中检查是否合法;

(2)如果用户名及口令合法,进入查询界面;

(3)如果用户名及口令不合法,用户名或口令最多可输入3次,验证错误超过3次以后,自动退出系统。

2. 评分功能

(1)在评委所打的分数中,去掉一个最高分,去掉一个最低分,得出个选手的平均分;

(2)按平均分进行排序,得出各选手的名次。

3. 菜单设计

(1)用户能够设置评委的人数并输入姓名;

(2)用户能够设置选手的人数;

(3)用户能够将最后得分及名次保存到文件中。

2.代码

# _*_ coding:utf-8 _*
#作者:码银# 用户验证功能
def login():print("欢迎来到简易的评分·系统,请先登录呦~")username = input("请输入用户名:")password = input("请输入口令:")if username == "admin" and password == "123456":print("登录成功!")return Trueelse:print("您还有三次机会呦~")for i in range(3):username = input("请重新输入用户名:")password = input("请重新输入口令:")if username == "admin" and password == "123456":print("登录成功!")return Trueprint("登录失败,请重新启动程序!")exit()
def menu():while True:print("~~~~~~~~~~~~~~~~")print("| 1.进入评分系统 ")print("| 2.退出       ")print("~~~~~~~~~~~~~~~~")choice = input("\n请输入操作编号:")if choice == "1":pingfen()elif choice == "2":breakelse:print("登出,下次使用请重新运行本程序")
def pingfen():# 评分功能num_judges = int(input("请输入评委人数:"))judge_names = []for i in range(num_judges):judge_names.append(input("请输入评委姓名:"))num_contestants = int(input("请输入选手人数:"))contestant_names = []for i in range(num_contestants):contestant_names.append(input("请输入选手姓名:"))scores = []for judge in judge_names:score = []for contestant in contestant_names:s = float(input(f"请输入{contestant}的{judge}得分:"))score.append(s)scores.append(score)# 计算每个选手的最终得分和名次final_scores = []for i in range(num_contestants):total_score = sum(scores[j][i] for j in range(num_judges))max_score = max(scores[j][i] for j in range(num_judges))min_score = min(scores[j][i] for j in range(num_judges))total_score -= max_score + min_scorefinal_scores.append(total_score / (num_judges - 2))# 按平均分排序并输出名次contestant_final_scores = sorted(final_scores, reverse=True)print("各选手的最终得分及名次如下(已经自动保存到文件中):")for i in range(num_contestants):print(f"{contestant_names[i]}: {final_scores[i]}, 名次: {i + 1}")with open("scores.txt", "w") as f:for i in range(num_contestants):print(f"{contestant_names[i]}: {final_scores[i]}, 名次: {i + 1}", file=f)
login()
menu()

结束了,下面不用看了。

2.1 用户验证功能

# 用户验证功能
def login():print("欢迎来到简易的评分·系统,请先登录呦~")username = input("请输入用户名:")password = input("请输入口令:")if username == "admin" and password == "123456":print("登录成功!")return Trueelse:print("您还有三次机会呦~")for i in range(3):username = input("请重新输入用户名:")password = input("请重新输入口令:")if username == "admin" and password == "123456":print("登录成功!")return Trueprint("登录失败,请重新启动程序!")exit()

 在Python中,exit()函数用于退出程序,它接受一个可选的退出状态代码作为参数。默认情况下,如果不传递参数,状态代码将被设置为0。调用这个函数将终止程序的执行并返回到操作系统。

2.2 菜单函数

def menu():while True:print("~~~~~~~~~~~~~~~~")print("| 1.进入评分系统 ")print("| 2.退出       ")print("~~~~~~~~~~~~~~~~")choice = input("\n请输入操作编号:")if choice == "1":pingfen()elif choice == "2":breakelse:print("登出,下次使用请重新运行本程序")

使用while True:

通过这个语句可以达到:除非选择“2.退出”break掉,其他选项都能在执行完程序后,再次跳出菜单。

2.3 评分功能

def pingfen():# 评分功能num_judges = int(input("请输入评委人数:"))judge_names = []for i in range(num_judges):judge_names.append(input("请输入评委姓名:"))num_contestants = int(input("请输入选手人数:"))contestant_names = []for i in range(num_contestants):contestant_names.append(input("请输入选手姓名:"))scores = []for judge in judge_names:score = []for contestant in contestant_names:s = float(input(f"请输入{contestant}的{judge}得分:"))score.append(s)scores.append(score)# 计算每个选手的最终得分和名次final_scores = []for i in range(num_contestants):total_score = sum(scores[j][i] for j in range(num_judges))max_score = max(scores[j][i] for j in range(num_judges))min_score = min(scores[j][i] for j in range(num_judges))total_score -= max_score + min_scorefinal_scores.append(total_score / (num_judges - 2))# 按平均分排序并输出名次contestant_final_scores = sorted(final_scores, reverse=True)print("各选手的最终得分及名次如下(已经自动保存到文件中):")for i in range(num_contestants):print(f"{contestant_names[i]}: {final_scores[i]}, 名次: {i + 1}")with open("scores.txt", "w") as f:for i in range(num_contestants):print(f"{contestant_names[i]}: {final_scores[i]}, 名次: {i + 1}", file=f)

四、结果分析

总体的输出结果:

保存文件成功截图:

五、小结

这是一个简单的评分系统,包括用户登录、菜单选择和评分功能。用户在登录时需要输入用户名和口令,如果输入正确,则可以进入评分系统。在评分系统中,用户可以选择进入评分功能,然后输入评委人数和选手人数,分别输入评委姓名和选手姓名,以及他们的得分。系统会自动计算每个选手的最终得分和名次,并按平均分从高到低排序输出。最后,用户的评分结果会被保存到一个文件中。


http://www.ppmy.cn/news/827357.html

相关文章

IIS 7 HTTP.sys漏洞深入分析

http.sys漏洞影响范围 随着各方的深入分析,各地域受Windows HTTP.sys漏洞影响的情况正在逐渐浮出水面。昨天的通告信息中提到Http.sys是Microsoft Windows处理HTTP请求的内核驱动程序,据绿盟科技互联网广谱平台数据显示,全球部署IIS的系统数量…

绝杀!Debug 大法,让运维不再尴尬

http://mp.weixin.qq.com/s?__bizMzA4Nzg5Nzc5OA&mid2651660539&idx1&snf2edc0a0343c1c6bacc1c650176c3a68&scene1&srcid07028T3KHrglBvtsaEyjEPOG#wechat_redirect 请及时关注“高效运维(微信ID:greatops)”公众号,并置顶公众号&a…

80个让你笑爆肚皮的程序员段子,不好笑算我输!

阅读本文大概需要 12 分钟。 1、折磨 对程序员的一般折磨:离奇的需求,对程序员的超级折磨:改三次需求~~~ 2、开发时间 项目经理说:给你三个人,多久可以完成?程序员:3个月!那五个人呢?1个半月那100个呢?1年吧!那1000个呢?程序员:无法完成! 3、书法 某猿退休…

黑苹果 电脑关机是因为发生了问题_【电脑常识】常见的电脑误区,你中了几点?...

好的电脑使用习惯,可以延长电脑的使用寿命,减少问题的出现。对于很多电脑新手来说,在使用电脑时存在很多操作误区,今天蝈蝈就来给大家一一例举一下,看看你中了几点,希望看完之后,可以改正过来&a…

xxl-job Vs ElasticJob,谁牛?

欢迎关注方志朋的博客,回复”666“获面试宝典 1. xxl-job2. 运行 xxl-job3. 开发定时任务 3.1 项目创建及配置3.2 定时任务开发方式4. 小结 前两天写了一篇文章介绍了一下 ElasticJob,有不少小伙伴强烈建议讲讲 xxl-job,其实 ElasticJob 本来…

java安装完不能ping,解决安装java jdk后导致的ping命令无法使用

nef格式转换为jpg格式的方法打开电脑浏览器,搜索【在线nef转jpg】文字,并点击链接进入。在新的界面中,点击【在线nef转jpg】按钮。进入到首页后,点击【添加文件】选项。在弹出的 2021-03-10 20:28:06 出于安全考虑,很多…

IIS7 HTTP.sys漏洞深入分析

http.sys漏洞影响范围 随着各方的深入分析,各地域受Windows HTTP.sys漏洞影响的情况正在逐渐浮出水面。昨天的通告信息中提到Http.sys是Microsoft Windows处理HTTP请求的内核驱动程序,据绿盟科技互联网广谱平台数据显示,全球部署IIS的系统数…

[网络安全自学篇] 四十八.Cracer第八期——(1)安全术语、Web渗透流程、Windows基础、注册表及黑客常用DOS命令

这是作者的网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您们喜欢,一起进步。前文分享了微软证书漏洞(CVE-2020-0601),并详细讲解了Windows验证机制、可执行文件签名复现及HTTPS劫持。本文将分享另一个主题——Cracer教程,…