列出总分前三和单科前三,并保存文件

package test33

import scala.collection.mutable.ListBuffer
import scala.io.Source

case class Student(name:String,yuwen:Int,shuxue:Int,yingyu:Int,total:Int,avg:Int)
object test {
  def main(args: Array[String]): Unit = {
    val list=ListBuffer[Student]()
    val it = Source.fromFile("score.txt").getLines().drop(1)
    while (it.hasNext) {
      val content = it.next()

      var arr = content.split(",")
      val name = arr(0)
      val yuwen = arr(1).toInt
      val shuxue = arr(2).toInt
      val yingyu =arr(3).toInt
      val total=yuwen+shuxue+yingyu
      val avg=total/3
//      println("当前行是",name,yingyu,total,avg)


      list+=Student(name,yuwen,shuxue,yingyu,total,avg)
    }
    val orderList=list.sortWith((a,b)=>a.total>b.total)
    orderList.foreach(s=>println(s"姓名:${s.name},总分:${s.total}"))

    list.sortWith((a,b)=>a.shuxue>b.shuxue)
      .foreach(s=>println(s"姓名:${s.name},数学:${s.shuxue},总分:${s.total}"))
  }
}

考虑柔性负荷的综合能源系统低碳经济优化调度【考虑碳交易机制】(Matlab代码实现)内容概要:本文围绕“考虑柔性负荷的综合能源系统低碳经济优化调度”展开,重点研究在碳交易机制下如何实现综合能源系统的低碳化与经济性协同优化。通过构建包含风电、光伏、储能、柔性负荷等多种能源形式的系统模型,结合碳交易成本与能源调度成本,提出优化调度策略,以降低碳排放提升系统运行经济性。文中采用Matlab进行仿真代码实现,验证了所提模型在平衡能源供需、平抑可再生能源波动、引导柔性负荷参与调度等方面的有效性,为低碳能源系统的设计与运行提供了技术支撑。; 适合人群:具备一定电力系统、能源系统背景,熟悉Matlab编程,从事能源优化、低碳调度、综合能源系统等相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①研究碳交易机制对综合能源系统调度决策的影响;②实现柔性负荷在削峰填谷、促进可再生能源消纳中的作用;③掌握基于Matlab的能源系统建模与优化求解方法;④为实际综合能源项目提供低碳经济调度方案参考。; 阅读建议:建议读者结合Matlab代码深入理解模型构建与求解过程,重点关注目标函数设计、约束条件设置及碳交易成本的量化方式,可进一步扩展至多能互补、需求响应等场景进行二次开发与仿真验证。
要**选出总分名的学生及其成绩**,我们可以分步走: 1. **为每个学生计算总分** 2. **按总分从高到低排序** 3. **取出3名输出姓名和各科成绩** 下面我用清晰的 Python 代码实现,详细解释每一步。 --- ### ✅ 完整可运行代码 ```python # 学生成绩数据 students = [ {"name": "小明", "scores": {"语文": 88, "数学": 92, "英语": 85}}, {"name": "小红", "scores": {"语文": 95, "数学": 98, "英语": 91}}, {"name": "小刚", "scores": {"语文": 76, "数学": 82, "英语": 75}}, {"name": "小丽", "scores": {"语文": 89, "数学": 58, "英语": 92}}, {"name": "小华", "scores": {"语文": 91, "数学": 98, "英语": 95}}, {"name": "张伟", "scores": {"语文": 82, "数学": 88, "英语": 80}}, {"name": "李娜", "scores": {"语文": 90, "数学": 75, "英语": 85}}, {"name": "王强", "scores": {"语文": 85, "数学": 90, "英语": 88}} ] # 步骤1:计算每位学生的总分 for student in students: total = sum(student["scores"].values()) # 语文+数学+英语 student["total_score"] = total # 步骤2:按总分降序排序(使用 lambda) sorted_students = sorted(students, key=lambda x: x["total_score"], reverse=True) # 步骤3:取3名打印信息 print("【总分名】") print(f"{'排名':<4} {'姓名':<4} {'语文':<6} {'数学':<6} {'英语':<6} {'总分':<6}") print("-" * 40) for i in range(3): s = sorted_students[i] print(f"{i+1:<4} {s['name']:<4} " f"{s['scores']['语文']:<6} {s['scores']['数学']:<6} " f"{s['scores']['英语']:<6} {s['total_score']:<6}") ``` --- ### ✅ 输出结果示例: ``` 【总分名】 排名 姓名 语文 数学 英语 总分 ---------------------------------------- 1 小红 95 98 91 284 2 小华 91 98 95 284 3 小明 88 92 85 265 ``` > 📌 注意:小红和小华同为 284 分,列第一。但 `sorted` 会保留原始顺序(稳定排序),所以谁在面取决于数据顺序。 --- ### 🔍 关键知识点解释 #### 1. `sum(student["scores"].values())` - `student["scores"]` 是一个字典:`{"语文": 88, "数学": 92, ...}` - `.values()` 提取所有分数 `[88, 92, 85]` - `sum(...)` 直接求和 #### 2. `sorted(..., key=lambda x: x["total_score"], reverse=True)` - `key=lambda x: x["total_score"]` 表示按照 `"total_score"` 字段排序 - `reverse=True` 表示从大到小(降序) #### 3. `for i in range(3)` 和索引访问 - 取排序后列表的个元素 - 打印时使用格式化对齐,让表格更美观 --- ### ✅ 进阶:如果多人列第怎么办?想显示所有“名”? 比如有两个第二名、两个第名,你想全部显示出来。 可以用以下方式扩展: ```python # 获取第名的分数(即中最低的那个) third_score = sorted_students[2]["total_score"] # 找出所有总分 >= 第名分数的人(处理列) top3_with_ties = [s for s in sorted_students if s["total_score"] >= third_score] print("\n【包含列的名】") for i, s in enumerate(top3_with_ties, 1): print(f"第{i}名: {s['name']} ({s['total_score']}分)") ``` > 如果有多个 265 分,都会被包括进来。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值