简易评分系统

news2024/11/20 3:33:01

目录

一、实验目的

二、操作环境

三、实验内容和过程

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 True
    else:
        print("您还有三次机会呦~")
        for i in range(3):
            username = input("请重新输入用户名:")
            password = input("请重新输入口令:")
            if username == "admin" and password == "123456":
                print("登录成功!")
                return True
        print("登录失败,请重新启动程序!")
        exit()
def menu():
    while True:
        print("~~~~~~~~~~~~~~~~")
        print("| 1.进入评分系统 ")
        print("| 2.退出       ")
        print("~~~~~~~~~~~~~~~~")
        choice = input("\n请输入操作编号:")
        if choice == "1":
            pingfen()
        elif choice == "2":
            break
        else:
            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_score
        final_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 True
    else:
        print("您还有三次机会呦~")
        for i in range(3):
            username = input("请重新输入用户名:")
            password = input("请重新输入口令:")
            if username == "admin" and password == "123456":
                print("登录成功!")
                return True
        print("登录失败,请重新启动程序!")
        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":
            break
        else:
            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_score
        final_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.coloradmin.cn/o/755841.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

windows下安装consul、springboot整合consul

Spring Cloud Consul通过自动配置和绑定到Spring Environment和其他Spring编程模型习语,为Spring Boot应用程序提供Consul集成。通过一些简单的注解,可以快速启用和配置应用程序内的常用模式,并使用Hashicorp的Consul构建大型分布式系统。提供…

使用Dreambooth LoRA微调SDXL 0.9

本文将介绍如何通过LoRA对Stable Diffusion XL 0.9进行Dreambooth微调。DreamBooth是一种仅使用几张图像(大约3-5张)来个性化文本到图像模型的方法。 本教程基于通过LoRA进行Unet微调,而不是进行全部的训练。LoRA是在LoRA: Low-Rank Adaptation of Large Language …

如何通过CRM系统减低客户流失率并提高销售业绩?

销售人员如何提高业绩,减低客户流失率?通过CRM客户管理系统与客户建立良好的客户关系、提升客户体验助力销售人员业绩节节攀升,降低客户流失率。接下来我们就来说一说CRM系统如何实现的? 1.全渠道沟通提升客户体验 只有足够多的…

搜索结果处理

1、排序 #sort排序 GET /hotel/_search {"query": {"match_all": {}},"sort": [{"score": "desc"},{"price": "asc"}] }#找到121.6,31周围的酒店,距离升序排序 GET /hotel/_sea…

前端学习——JS进阶 (Day2)

深入对象 创建对象三种方式 构造函数 小练习 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport"…

python_openpyxl常用语法记录

目录 写在前面&#xff1a; 开始 工作薄 and 工作表 操作单元格 访问&#xff08;调用&#xff09;单个单元格 访问&#xff08;调用&#xff09;多个单元格 保存工作薄 用例 例&#xff1a;简单数据和条形图 操作样式 样式的默认值 单元格样式和命名样式 单元格样…

配置Hadoop_0

配置Hadoop_0 1配置Hadoop100模板虚拟机1.1配置Hadoop100模板虚拟机硬件1.2配置Hadoop100模板虚拟机软件1.3配置Hadoop100模板虚拟机IP地址1.4配置Hadoop100模板虚拟机主机名称/主机名称映射1.5配置Hadoop100模板虚拟机远程操作工具 1配置Hadoop100模板虚拟机 Hadoop100 内存…

编译给IOS平台用的liblzma库(xz与lzma)

打开官方网: XZ Utils 新工程仓库: git clone https://git.tukaani.org/xz.git git clone https://github.com/tukaani-project/xz 旧工程仓库: git clone https://git.tukaani.org/lzma.git 旧版本工程编译: 先进行已下载好的lzma目录 执行./autogen.sh生成configure配置…

233. 数字 1 的个数

题目描述&#xff1a; 主要思路&#xff1a; 寻找1的个数主要分为两个部分&#xff1a;完整的1和取余的1。 完整的1&#xff1a;从个位一直到最高位&#xff0c;例如十位上的1可以出现10次&#xff0c;10-19&#xff0c;然后看他的高位&#xff0c;看看可以出现几轮循环。 取余…

QListWidget 小节

QListWidget 小节 QListWidget 简介举例UI设计头文件源文件 QListWidget 简介 以下是 QListWidget 常用函数的一些说明&#xff1a; addItem(item)&#xff1a;向列表中添加一个项。 addItems(items)&#xff1a;向列表中添加多个项。 clear()&#xff1a;清空列表中的所有项…

射线与物质的相互作用

射线与物质的相互作用 射线与物质的相互作用概要 电离——核外层电子克服束缚成为自由电子&#xff0c;原子成为正离子激发——使核外层电子由低能级跃迁到高能级而使原子处于激发状态&#xff0c;退激发光 射线 致电离辐射 慢化 电离损失&#xff1a;带电粒子与靶物质原子…

this指针/闭包及作用域

一.作用域链 1.通过一个例子 let aglobalconsole.log(a);//globalfunction course(){let bjsconsole.log(b);//jssession()function session(){let cthisconsole.log(c);//Windowteacher()//函数提升function teacher(){let dstevenconsole.log(d);//stevenconsole.log(test1,…

【unity之IMGUI实践】单例模式管理数据存储【二】

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;uni…

FocusState, SubmitTextField 的使用

1. FocusState 输入文本添加焦点状态 1.1 实现 /// 输入文本焦点状态 struct FocusStateBootcamp: View {// 使用枚举enum OnboardingFields: Hashable{case usernamecase password}//FocusState private var usernameInFocus: BoolState private var username: String "…

两分钟python发个邮件

python简单发个邮件 直接上代码测试 之前spring boot简单发送发送个邮件大约5min&#xff0c;ennn这个python发个邮件两三分钟吧 直接上代码 import smtplib from email.mime.multipart import MIMEMultipart from email.mime.text import MIMETextclass MailTest(object):def…

Flink 在新能源场站运维的应用

摘要&#xff1a;本文整理自中南电力设计院工程师、注册测绘师姚远&#xff0c;在 Flink Forward Asia 2022 行业案例专场的分享。本篇内容主要分为四个部分&#xff1a; 1. 建设背景 2. 技术架构 3. 应用落地 4. 后续及其他 Tips&#xff1a;点击「阅读原文」免费领取 5000CU*…

Vue localhost 从 http 307 到 https

Vue localhost 从 http 307 到 https HTTP 307 与 HSTS HTTP 307中间人攻击HSTS - HTTP Strict Transport Security 如何解决问题 Vue localhost 从 http 307 到 https 一个 Vue2 项目之前本地都是通过 HTTP 的 localhost 访问(如下) 后来突然无法访问了, 提示的错误内容是 E…

静电接地桩的设计和施工

静电接地桩是用于将静电荷引导到地下的装置&#xff0c;以确保工作环境。以下是一般静电接地桩设计的一些建议和步骤&#xff1a; 1. 选择合适的位置&#xff1a;静电接地桩应该位于静电产生源附近&#xff0c;并接近地面。可以选择在室内或室外&#xff0c;但要确保容易维护和…

web中引入live2d的moc3模型

文章目录 前言下载官方sdk文件使用ide编译项目&#xff08;vsCode&#xff09;项目初始化使用vsCode项目树介绍使用live server运行index页面 演示导入自己的模型并显示modelDir文件resources文件夾案例模型修改modelDir然後重新打包項目運行 前言 先跟着官方sdk调试一遍&…

14.live555mediaserver-play请求与响应

live555工程代码路径 live555工程在我的gitee下&#xff08;doc下有思维导图、drawio图&#xff09;&#xff1a; live555 https://gitee.com/lure_ai/live555/tree/master 章节目录链接 0.前言——章节目录链接与为何要写这个&#xff1f; https://blog.csdn.net/yhb1206/art…