寒假学习记录第六天

Posted xuange1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了寒假学习记录第六天相关的知识,希望对你有一定的参考价值。

     统计学生成绩
学生的成绩清单格式如下所示,第一行为表头,各字段意思分别为学号、性别、课程名
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)

    }}

  

以上是关于寒假学习记录第六天的主要内容,如果未能解决你的问题,请参考以下文章

2020年寒假学习进度第六天

寒假第六天

寒假实践第六天

寒假集训第六天---LCA题解

寒假每日一题剪绳子(个人练习)详细题解+推导证明(第六天)

第六天Python学习记录