python输入n(1<n<=100)个学生的信息,包括学号、姓名、语文、数学和英语。学号为4位数字组成,成绩为整数,如果不满足此条件,出现异常,如果输入的n不是数字或者 n<=1或n>100,出现异常,输出“输入的人数必须是数字,大于0并且小于等于100”。要求根据3门功课的平均成绩从高分到低分输出每个学生的学号、姓名、3门功课成绩及平均成绩,若平均成绩相同则按语文成绩从高到低排序。
时间: 2023-06-04 15:07:04 浏览: 564
用Python编程实现学生成绩管理,能按学期、按班级对学生成绩进行录入、修改、统计、查询和输出
这是一个编程问题,我可以回答。
可以按照以下步骤处理:
1.提示用户输入n,并进行条件判断,判断输入是否合法。如果不合法,输出错误信息并结束程序。
2.提示用户输入n个学生的信息,包括学号、姓名、语文、数学和英语。判断输入是否合法,如果不合法,输出错误信息并结束程序。
3.将学生信息存储在一个列表中,并对列表进行排序,排序规则是先按照平均成绩从高到低排序,如果平均成绩相同,则按照语文成绩从高到低排序。
4.遍历列表,输出每个学生的学号、姓名、3门功课成绩及平均成绩。
下面是一个Python的代码示例:
```
import sys
class Student:
def __init__(self, id, name, chinese, math, english):
self.id = id
self.name = name
self.chinese = chinese
self.math = math
self.english = english
self.average = (chinese + math + english) / 3
def __lt__(self, other):
if self.average != other.average:
return self.average > other.average
else:
return self.chinese > other.chinese
def input_students():
try:
n = int(input("请输入学生人数:"))
if n <= 1 or n > 100:
raise ValueError
except ValueError:
print("输入的人数必须是数字,大于0并且小于等于100")
sys.exit()
students = []
for i in range(n):
try:
id = int(input("请输入学号:"))
if id < 1000 or id > 9999:
raise ValueError
name = input("请输入姓名:")
chinese = int(input("请输入语文成绩:"))
math = int(input("请输入数学成绩:"))
english = int(input("请输入英语成绩:"))
except ValueError:
print("输入信息有误,请重新输入。")
sys.exit()
student = Student(id, name, chinese, math, english)
students.append(student)
students.sort()
return students
def output_students(students):
print("{0:<8}{1:<8}{2:<8}{3:<8}{4:<8}{5:<8}".format("学号", "姓名", "语文", "数学", "英语", "平均成绩"))
for student in students:
print("{0:<8}{1:<8}{2:<8}{3:<8}{4:<8}{5:<8.2f}".format(student.id, student.name, student.chinese, student.math, student.english, student.average))
if __name__ == "__main__":
students = input_students()
output_students(students)
```
运行该程序后,用户需要输入n和n个学生的信息,程序会按照要求对学生信息进行排序,并输出每个学生的信息。如果输入有误,程序会输出错误信息并结束运行。
阅读全文