zoukankan      html  css  js  c++  java
  • 大三寒假学习进度(二十八)

    总的来说,今天主要复习了scala的基础知识,学习了深度学习的概况。

    /**
    * @Description:
    * @author: LiuGe
    * @date: 2021/2/4
    */
    object Exp02_03 {

    /*
    学生的成绩清单格式如下所示,第一行为表头,各字段意思分别为学号、性别、课程名1、课程名 2 等
    后面每一行代表一个学生的信息,各字段之间用空白符隔开
    给定任何一个如上格式的清单(不同清单里课程数量可能不一样),要求尽可能采用函数式编程
    统计出各门课程的平均成绩,最低成绩,和最高成绩
    另外还需按男女同学分开,分别统计各门课程的平均成绩,最低成绩,和最高成绩。
    */
    def main(args: Array[String]): Unit = {
    // 从文件中读取测试数据
    val source1: BufferedSource = Source.fromFile("datas/test1.txt")
    // val source2: BufferedSource = Source.fromFile("datas/test2.txt")
    // 把每行数据切割
    val splitSource: List[Array[String]] = source1.getLines().map(_.split(" ")).toList
    // 获取学科名称
    val courseNames: Array[String] = splitSource.head.drop(2)
    // 获取所有学生的信息
    val allStudents = splitSource.tail
    // 获取课程数量
    val courseNum = courseNames.length

    // 统计各门课程的平均成绩,最低成绩,最高成绩
    val studentInfo = getData(allStudents, courseNum)
    println("course average min max")
    printResult(courseNames, studentInfo)

    // 按性别过滤数据
    val maleLines = allStudents.filter(_ (1) == "male")
    val femaleLines = allStudents.filter(_ (1) == "female")

    // 男生 输出结果
    val maleResult = getData(maleLines, courseNum)
    println("course average min max (Male)")
    printResult(courseNames, maleResult)

    // 女生 输出结果
    val femaleResult = getData(femaleLines, courseNum)
    println("course average min max (Female)")
    printResult(courseNames, femaleResult)

    }

    def getData(lines: List[Array[String]], courseNum: Int) = {
    // 通过for循环生成 (平均分,最低分,最高分) 三元组
    (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)
    }
    }

    //输出结果函数
    def printResult(courseNames: Array[String], theResult: Seq[(Double, Double, Double)]) {
    // 通过zip方法合并课程名称和数值
    (courseNames zip theResult).foreach {
    case (course, result) =>
    println(f"${course + ":"}%-10s${result._1}%5.2f${result._2}%8.2f${result._3}%8.2f")
    }
    }

    }

  • 相关阅读:
    增强for循环用法___ArrayList数组实现使用下标最好,LinkedList使用增强型的(转载)
    Java类加载的时机_4种主动引用会触犯类加载+剩下的被动引用不会触发类的加载
    剑指offer_面试题11 数值的整数次方_考察代码的完整性
    深入理解Java虚拟机博客参考目录
    GPU总结(1)
    牛客_Java_值传递(拷贝)不该表原来变量+传引用的话会一起改变
    Java 源码学习线路————_先JDK工具包集合_再core包,也就是String、StringBuffer等_Java IO类库
    centos7 安装jdk1.8
    JPA
    javaScript获取url中的参数
  • 原文地址:https://www.cnblogs.com/hang-hang/p/14871867.html
Copyright © 2011-2022 走看看