输入学生姓名学号成绩,按从小到大的顺序输出
时间: 2023-08-29 15:04:30 浏览: 105
好的,我可以为您提供一个简单的 Python 代码来实现这个功能。请确认您已经安装了 Python 环境。
```python
# 定义一个空列表用于存储学生信息
students = []
# 循环输入学生信息
while True:
name = input("请输入学生姓名(输入 q 退出):")
if name == "q":
break
sid = input("请输入学生学号:")
score = float(input("请输入学生成绩:"))
student = {"name": name, "sid": sid, "score": score}
students.append(student)
# 按照成绩从小到大排序
students.sort(key=lambda x: x["score"])
# 输出学生信息
for student in students:
print("姓名:{},学号:{},成绩:{}".format(student["name"], student["sid"], student["score"]))
```
您可以将此代码复制到 Python 环境中运行,按照提示输入学生信息即可。
相关问题
编写一个C语言程序,问题描述 有N(0<N<=100)个学生,每个学生有3门课的成绩,输入每个学生数据(包括学号,姓名,三门课成绩),计算每个学生的平均成绩,并按照平均成绩从高到低的顺序输出学生信息,平均成绩相同时,则按照学号从小到大顺序输出。 输入说明 第一行输入学生个数N,然后逐行输入N个学生信息,包括学号,姓名,三门课成绩,学号为正整数,姓名不超过10个字符,各门课程成绩为整数,用空格分隔。 输出说明 按照平均成绩由高到低输出学生信息,平均成绩相同时,则按照学号从小到大顺序输出,输出信息包括学号、姓名、平均成绩(保留1位小数),用空格分隔,每个学生信息占一行。
#include <stdio.h>
#include <string.h>
struct Student {
int id;
char name[11];
int score[3];
float average;
};
int main() {
int n;
scanf("%d", &n);
struct Student students[n];
for (int i = 0; i < n; i++) {
scanf("%d %s %d %d %d", &students[i].id, students[i].name, &students[i].score[0], &students[i].score[1], &students[i].score[2]);
students[i].average = (float)(students[i].score[0] + students[i].score[1] + students[i].score[2]) / 3;
}
// 冒泡排序,按平均成绩从高到低排序,平均成绩相同时按学号从小到大排序
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - 1 - i; j++) {
if (students[j].average < students[j + 1].average) {
struct Student temp = students[j];
students[j] = students[j + 1];
students[j + 1] = temp;
} else if (students[j].average == students[j + 1].average && students[j].id > students[j + 1].id) {
struct Student temp = students[j];
students[j] = students[j + 1];
students[j + 1] = temp;
}
}
}
// 输出排序后的结果
for (int i = 0; i < n; i++) {
printf("%d %s %.1f\n", students[i].id, students[i].name, students[i].average);
}
return 0;
}
输入若干学生信息,分别按照姓名顺序,总成绩顺序从小到大输出学生信息包括学号,姓名,语文成绩,数学成绩,英语成绩,,并输出
为了满足这个需求,我们可以设计一个程序来读取学生的输入,存储在数组或列表中,并对数据进行排序。这里以Python为例来说明:
首先,创建一个学生类(Student)来表示学生的属性:
```python
class Student:
def __init__(self, student_id, name, chinese_score, math_score, english_score):
self.student_id = student_id
self.name = name
self.chinese_score = chinese_score
self.math_score = math_score
self.english_score = english_score
students = []
```
接着,输入学生的数据:
```python
while True:
student_id = input("请输入学号(输入'q'退出):")
if student_id.lower() == 'q':
break
name = input("请输入姓名:")
chinese_score = float(input("请输入语文成绩:"))
math_score = float(input("请输入数学成绩:"))
english_score = float(input("请输入英语成绩:"))
students.append(Student(student_id, name, chinese_score, math_score, english_score))
```
现在对数据进行排序。我们首先按姓名(可以利用元组的字典序),如果名字相同再按总成绩(假设总分=语文+数学+英语)从低到高排序:
```python
def sort_students(students):
return sorted(students, key=lambda x: (x.name, -sum(x.__dict__.values())))
sorted_students = sort_students(students)
```
最后,遍历并打印排序后的学生信息:
```python
for student in sorted_students:
print(f"学号:{student.student_id}, 姓名:{student.name}, 语文成绩:{student.chinese_score}, 数学成绩:{student.math_score}, 英语成绩:{student.english_score}")
```
阅读全文