前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >循环输入学生和成绩,最后按照总成绩进行排序

循环输入学生和成绩,最后按照总成绩进行排序

作者头像
SingYi
发布2022-07-14 14:27:32
3440
发布2022-07-14 14:27:32
举报
文章被收录于专栏:Lan小站Lan小站

在某python交流群看到了这样一个问题

image.png
image.png
image.png
image.png

然后到晚上9点似乎他还没有搞定,于是掏出了我的pycharm。

一种是结构体(以前在C#里面是这么叫的),其实就是class,定义一个学生类,然后就是学生姓名,成绩,总成绩

然后用sort排序(还有些手动排序方法快要忘了。),一种就是直接列表。

第一种方法:

代码语言:javascript
复制
# -*- coding: utf-8 -*-
"""
-------------------------------------------------
@ Author :Lan
@ Blog :www.lanol.cn
@ Date : 2020/7/24
@ Description:I'm in charge of my Code
-------------------------------------------------
"""


# 定义一个学生类初始值为姓名,语文成绩,数学成绩,英语成绩
class Student:
    def __init__(self, name, chinese, math, english):
        self.name = name
        self.chinese = chinese
        self.math = math
        self.english = english
        self.allGrade = chinese + math + english
        # 为了验证数值是否正确,加了个输出看一下
        print(self.allGrade)


# 定义一个列表,用来装载所有成绩
result = []
while True:
    # 录入信息
    stuName = input("请输入姓名:")
    stuChinese = float(input("请输入语文:"))
    stuMath = float(input("请输入数学:"))
    stuEnglish = float(input("请输入英语;"))
    # 将每个人的信息实例化一个Student并存入列表。
    result.append(Student(stuName, stuChinese, stuMath, stuEnglish))
    # 判断是否继续添加
    if input('是否继续添加(yes/no)') == 'no':
        break

# 对结果进行排序
result = sorted(result, key=lambda a: a.allGrade, reverse=True)
# 输出结果
for i in result:
    print(i.name)

第二种方法

代码语言:javascript
复制
# -*- coding: utf-8 -*-
"""
-------------------------------------------------
@ Author :Lan
@ Blog :www.lanol.cn
@ Date : 2020/7/24
@ Description:I'm in charge of my Code
-------------------------------------------------
"""
# 定义一个列表
result = []
while True:
    # 录入信息
    stuName = input("请输入姓名:")
    stuChinese = float(input("请输入语文:"))
    stuMath = float(input("请输入数学:"))
    stuEnglish = float(input("请输入英语;"))
    # 装到列表
    result.append([stuName, stuChinese, stuMath, stuEnglish, stuChinese + stuMath + stuEnglish])
    # 判断是否继续
    if input('是否继续添加(yes/no)') == 'no':
        break
# 排序
result = sorted(result, key=lambda a: a[4], reverse=True)
for i in result:
    print(i)

冒泡排序

代码语言:javascript
复制
# -*- coding: utf-8 -*-
"""
-------------------------------------------------
@ Author :Lan
@ Blog :www.lanol.cn
@ Date : 2020/7/24
@ Description:I'm in charge of my Code
-------------------------------------------------
"""
# 定义一个列表
result = []
while True:
    # 录入信息
    stuName = input("请输入姓名:")
    stuChinese = float(input("请输入语文:"))
    stuMath = float(input("请输入数学:"))
    stuEnglish = float(input("请输入英语;"))
    # 装到列表
    result.append([stuName, stuChinese, stuMath, stuEnglish, stuChinese + stuMath + stuEnglish])
    # 判断是否继续
    if input('是否继续添加(yes/no)') == 'no':
        break
# 冒泡排序
for i in range(len(result)):
    for j in range(0, len(result) - i - 1):
        if result[j][4] < result[j + 1][4]:
            result[j], result[j + 1] = result[j + 1], result[j]
for i in result:
    print(i)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档