快速学习scala语法和数据结构,完成以下作业内容。
作业内容:
以下数据包含了某大学某专业学生的成绩,数据格式如下所示: Tom,DataBase,80 Tom,Algorithm,50 Tom,DataStructure,60 Jim,DataBase,90 Jim,Algorithm,60 Jim,DataStructure,80 Jack,DataBase,92 Jack,Algorithm,62 Jack,DataStructure,82
问题描述
请根据以上给定的实验数据,在scala中通过编程来计算以下内容: (1)该系总共有多少学生; (2)该系共开设了多少门课程; (3)Tom同学的总成绩平均分是多少; (4)求每名同学的选修的课程门数; (5)该系DataBase课程共有多少人选修; (6)各门课程的平均分是多少;
参考代码:
import scala.collection.mutable
object Homework {
def main(args: Array[String]): Unit = {
val map = Map(
("Tom", "DataBase") -> 80,
("Tom", "Algorithm") -> 50,
("Tom", "DataStructure") -> 60,
("Jim", "DataBase") -> 90,
("Jim", "Algorithm") -> 60,
("Jim", "DataStructure") -> 80,
("Jack", "DataBase") -> 92,
("Jack", "Algorithm") -> 62,
("Jack", "DataStructure") -> 82
)
// 该系总共有多少学生;
printf("该系总共有%d名学生\n", calculate_department_length(map))
// 该系共开设了多少门课程;
printf("该系共开设了%d门课程\n", calculate_course_length(map))
//Tom同学的总成绩平均分是多少;
printf("Tom同学的总成绩平均分是%.2f\n", calculate_student_average_grade(map, "Tom"))
//求每名同学的选修的课程门数;
val set_student = mutable.Set[String]()
val set_course = mutable.Set[String]()
map.keys.foreach(tuple => {
set_student += tuple._1
set_course += tuple._2
})
for (student <- set_student) {
printf("%s同学的选修的课程门数是%d\n", student, calculate_student_course_num(map, student))
}
// 该系DataBase课程共有多少人选修
printf("该系DataBase课程共有%d人选修\n", calculate_course_num(map, "DataBase"))
// 各门课程的平均分是多少;
for (course <- set_course) {
printf("%s课程的平均分是%.2f\n", course, calculate_course_average_grade(map, course))
}
}
def calculate_department_length(map: Map[(String, String), Int]): Int = {
// 定义一个可变set
// 使用return 这样看起来比较舒服,和python3.10语法很像
val set = mutable.Set[String]()
for (student <- map.keys) {
set += student._1
}
return set.size
}
def calculate_course_length(map: Map[(String, String), Int]): Int = {
val set = mutable.Set[String]()
for (student <- map.keys) {
set += student._2
}
return set.size
}
def calculate_student_average_grade(map: Map[(String, String), Int], student_name: String): Double = {
var grade: Double = 0
val set = mutable.Set[String]()
for (student <- map.seq) {
if (student._1._1 == student_name) {
set += student._1._2 //计算这名学生的课程数量
grade += student._2 //计算学生总成绩
}
}
return grade / set.size
}
def calculate_student_course_num(map: Map[(String, String), Int], student_name: String): Int = {
val set = mutable.Set[String]()
for (student <- map.seq) {
if (student._1._1 == student_name) {
set += student._1._2 //计算这名学生的课程数量
}
}
return set.size
}
def calculate_course_num(map: Map[(String, String), Int], course_name: String): Int = {
var length: Int = 0
for (student <- map.seq) {
if (student._1._2 == course_name) {
length += 1 //该系课程共有多少人选修;
}
}
return length
}
def calculate_course_average_grade(map: Map[(String, String), Int], course_name: String): Double = {
var grade: Double = 0
var length: Int = 0
for (student <- map.seq) {
if (student._1._2 == course_name) {
length += 1 //该系课程共有多少人选修;
grade += student._2 // 计算总成绩
}
}
return grade / length
}
}
精彩链接
发表评论