简易评分系统

目录

一、实验目的

二、操作环境

三、实验内容和过程

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.hqwc.cn/news/23028.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python自动化办公:pptx篇

文章目录 简介能做什么PPT要素介绍官方demo高阶引申参考文献 202201笔记迁移 简介 python-pptx包是用来自动化处理ppt的。 使用的第一步是安装 pip install python-pptx相比python-docx,python-pptx的使用更为麻烦一些,原因有很多,比如说&…

SpringBoot与Vue前后端分离项目。用Nginx代理。

Nginx代理主要是解决跨域与负载均衡的作用。 我这里用的自己的电脑,用的windows系统,不过配置基本是和Linux一样的。 下载Nginx nginx: download Nginx常用命令,先cd到解文件夹路径: nginx.exe:开启服务。nginx -s…

数据可视化分析,2023结婚全品类消费趋势洞察报告

结婚消费与人们的关系密切相关。结婚是一个重要的人生事件,往往伴随着大量的消费。人们倾向于在婚礼仪式、婚纱摄影、宴会等方面进行豪华的投资,以展示社会地位和个人品味。此外,结婚还涉及到婚戒、婚庆、蜜月旅行等费用。然而,随…

LayUI之增删改查

目录 一、前言 1.1 前言 1.2 前端代码(数据表格组件) 1.3 封装JS 二、LayUI增删改查的后台代码 2.1 编写Dao方法 2.1 增加 2.2 删除 2.3 修改 三、LayUI增删改查的前端代码 3.1 增加 一、前言 1.1 前言 上一篇文章我们一起做了LayUI的动态添加选项卡,这一篇…

[SSM]MyBatis的缓存与逆向工程

目录 十三、MyBatis的缓存 13.1一级缓存 13.2二级缓存 13.3MyBatis集成EhCache 十四、MyBatis的逆向工程 14.1逆向工程配置与生成 14.2测试 十三、MyBatis的缓存 缓存:cache 缓存的作用:通过减少IO的方式,来提高程序的执行效率。 myb…

【C++】Eigen库实现最小二乘拟合

前言 入职第二周的任务是将导师的Python代码C化&#xff0c;发现Python中存在Numpy包直接调用np.polyfit就好了&#xff0c;但是C不存在需要造轮子。 #include <iostream> #include <cmath> #include <vector> #include <Eigen/QR> #include "x…

【STM32CubeIDE】 stm32f103的内部Flash读写,double数值读写

单片机stm32f103c8t6&#xff0c;程序存储器64Kb&#xff1a; 对其最后一页&#xff0c;第63页进行读写操作&#xff0c;空间1Kb。 写入一个32位的数据0x12345678到Flash首地址为0x0800FC00.则在Flash中存储情况如下&#xff1a; 即&#xff0c;低位地址存储数据的低位&#xf…

C# Linq 详解三

目录 概述 十三、Sum / Min / Max / Average 十四、Distinct 十五、Concat 十六、Join 十七、ToList 十八、ToArray 十九、ToDictionary C# Linq 详解一 1.Where 2.Select 3.GroupBy 4.First / FirstOrDefault 5.Last / LastOrDefault C# Linq 详解二 1.OrderBy 2.O…

【优选算法题练习】day6

文章目录 一、76. 最小覆盖子串1.题目简介2.解题思路3.代码4.运行结果 二、704. 二分查找1.题目简介2.解题思路3.代码4.运行结果 三、34. 在排序数组中查找元素的第一个和最后一个位置1.题目简介2.解题思路3.代码4.运行结果 总结 一、76. 最小覆盖子串 1.题目简介 76. 最小覆…

拓宽“主航道”的Serverless与EDA领域,亚马逊云科技不断创新开拓

在新潮如走马灯般变换的时尚界&#xff0c;每隔几年就会刮起一阵复古风。被誉为“时尚教父”的著名设计师安德烈莱昂塔利曾说&#xff1a;“时尚总是在寻找新的灵感和方向&#xff0c;而复古是其中一个重要的来源。” 无独有偶。日新月异的高科技领域也会出现公认的“过时”…

单片机第一季:零基础6——按键

目录 1&#xff0c;独立按键 2&#xff0c;矩阵按键 &#xff08;注意&#xff1a;文章中的代码仅供参考学习&#xff0c;实际使用时要根据需要修改&#xff09; 1&#xff0c;独立按键 按键管脚两端距离长的表示默认是导通状态&#xff0c;距离短的默认是断开状态&#xf…

【监控系统】Prometheus监控组件Mysql-Exporter配置实战

Mysql-Exporter主要监控Mysql数据库的稳定性、吞吐量、连接情况、缓冲池使用情况、查询性能等各项指标&#xff0c;是我们压测时常常需要监控的一些指标。 目前&#xff0c;Exporter 支持高于5.6版本的 MySQL 和高于10.1版本的 MariaDB。在 MySQL/MariaDB 低于5.6版本时&#…