寒假学习记录第六天

统计学生成绩

学生的成绩清单格式如下所示,第一行为表头,各字段意思分别为学号、性别、课程名

1、课程名 2 等,后面每一行代表一个学生的信息,各字段之间用空白符隔开

Id

gender Math English Physics

301610 male 80 64 78

301611 female 65 87 58

...

给定任何一个如上格式的清单(不同清单里课程数量可能不一样),要求尽可能采用函

数式编程,统计出各门课程的平均成绩,最低成绩,和最高成绩;另外还需按男女同学分开,

分别统计各门课程的平均成绩,最低成绩,和最高成绩。

package com.bjsxt.scala

object Lesson_ClassAndObj {
  def main(args:Array[String])
       {

         var ii=1
             do{
              println("样例"+ii+":")
             val inputFile=scala.io.Source.fromFile("test"+ii+".txt")
              val originalData=inputFile.getLines.map{_.split{"\\s+"}}.toList
             val courseNames=originalData.head.drop(2)
            val allStudents=originalData.tail
           val courseNum=courseNames.length
           def statistc(lines:List[Array[String]])=
             {

             (for(i<- 2 to courseNum+1) yield
                      {

                            val temp =lines map
                                {
                                      elem=>elem(i).toDouble
                                 }
                              (temp.sum,temp.min,temp.max)
                        })map{case(total,min,max)=>(total/lines.length,min,max)} //最后一个map对for的结果进行修改,将总分转为平均分
                 }

             def printResult(theresult:Seq[(Double,Double,Double)])
               {

                   (courseNames zip theresult)foreach
                      {
                            case(course,result)=>
                              println(f"${course+":"}%-10s${result._1}%5.2f${result._2}%8.2f${result._3}%8.2f")
                         }
                 }

               val allResult=statistc(allStudents)
               println("course    average    min    max")
            printResult(allResult)

               val (maleLines,femaleLines)=allStudents partition
                 {
                   _(1)=="male"
                }

               val maleResult=statistc(maleLines)
              println("course    average    min    max   (males)")
              printResult(maleResult)

              val femaleResult=statistc(femaleLines)
             println("course    average    min    max   (females)")
             printResult(femaleResult)
         ii=ii+1
          println()
        }while(ii!=3)

    }}

  

原文地址:https://www.cnblogs.com/xuange1/p/12271200.html

时间: 2024-10-14 11:03:44

寒假学习记录第六天的相关文章

寒假学习记录12

学习任务: 1.python基础 (1)dict Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度. 把数据放入dict的方法,除了初始化时指定外,还可以通过key放入,由于一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值冲掉. 要避免key不存在的错误,有两种办法,一是通过in判断key是否存在: 二是通过dict提供的get()方法,如果ke

寒假学习记录15_Geo学习

因为疫情的信息需要使用中国地图进行展示,因此我对Echars中的Geo进行了学习. 首先要准备好echarts.min.js和china.js这两个js文件,准备好后就可以对data部分进行修改了,通过访问数据库将城市和对应数据填在对应的name和value位置. (爬虫部分回头另写博客) 数据展示代码如下所示: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncodi

寒假学习记录第二天

1.if else /** * if else */ val age =18 if (age < 18 ){ println("no allow") }else if (18<=age&&age<=20){ println("allow with other") }else{ println("allow self") } 2. for ,while,do…while /** * to和until * 例: *

寒假学习记录2_Scala解释器的使用以及Scala程序的编译执行

Scala解释器的使用: 由于在前面的安装过程中,已经自动设置了path变量,所以不需要给出scala命令的路径全称,在命令提示符终端中输入“scala”命令便会进入scala命令行提示符状态(即“scala>”),可以在后面输入命令. 运行Scala解释器以后,就可以测试了.输入一条语句,解释器会立即执行语句并返回结果,这就是REPL(Read-Eval-Print Loop,交互式解释器).为我们提供了交互式执行环境,表达式计算完成就会输出结果,而不必等到整个程序运行完毕,因此可即时查看中间

寒假学习记录第三天

Scala方法与函数 Scala方法的定义 有参方法 无参方法   def fun (a: Int , b: Int ) : Unit = { println(a+b) } fun(1,1) def fun1 (a : Int , b : Int)= a+b println(fun1(1,2)) 注意点: l 方法定义语法 用def来定义 l 可以定义传入的参数,要指定传入参数的类型 l 方法可以写返回值的类型也可以不写,会自动推断,有时候不能省略,必须写,比如在递归方法中或者方法的返回值是函数

寒假学习记录第七天

Python爬虫的一个案例 爬取国家药品监督管理总局中基于中华人民共和国化妆品生产许可证相关数据 import requests from fake_useragent import UserAgent ua = UserAgent(use_cache_server=False,verify_ssl=False).random headers = { 'User-Agent':ua } url = 'http://125.35.6.84:81/xk/itownet/portalAction.do

寒假学习记录第九天

今天弄了一下实验四shell的基础题 请到本教程官网的“下载专区”的“数据集”中下载 chapter5-data1.txt,该数据集包含 了某大学计算机系的成绩,数据格式如下所示: Tom,DataBase,80 Tom,Algorithm,50 Tom,DataStructure,60 Jim,DataBase,90 Jim,Algorithm,60 Jim,DataStructure,80 …… 请根据给定的实验数据,在 spark-shell 中通过编程来计算以下内容: (1)该系总共有多

寒假学习记录20

问题(已解决): 用SSH Secure File Transfer Client连接虚拟机报一下错误: The host '192.168.1.12' is unreachable. the host may be down..... 解决方式: 1.查看虚拟机ssh是否开启: 2.检查虚拟机防火墙是否关闭: 3.在主机上使用终端ping一下看是否能ping的通: 4.查看虚拟机的ip地址(我的问题就是在这,虚拟机IP地址变了). 原文地址:https://www.cnblogs.com/zh

2.7寒假学习记录

对于昨天的树形结构,后端返回数据修改好了,然后返回给前端进行了处理,但是使用的树形控件,直接对返回来的json数组格式进行初始化赋值,所以对于有孩子的父节点和没有孩子的叶子节点要有不同的操作,vue里提供了isleaf,但是vue里是最好把前后端分离,所以一开始我在vue里进行数据处理虽然成功了,但是领导说这样数据有时会混乱而且不安全,要区别react框架,所以继续修改成前后端分离的格式,在组件中加入v-if  v-else进行处理判断,进行格式赋值,即可.又是长知识的一天. 原文地址:http