chatgpt:
以下是Python3的代码实现:
def process_student_info():
try:
n = int(input())
if n <= 1 or n > 100:
raise ValueError
except ValueError:
print("输入的人数必须是数字,大于0并且小于等于100")
return
students = []
for i in range(n):
try:
student_info = input().split()
if len(student_info[0]) != 4 or not student_info[0].isdigit():
raise ValueError
name = student_info[1]
if not name.isalpha() or len(name) > 10:
raise ValueError
scores = list(map(int, student_info[2:]))
if len(scores) != 3 or not all(0 <= score <= 100 for score in scores):
raise ValueError
avg_score = sum(scores) / 3
students.append((student_info[0], name, scores[0], scores[1], scores[2], avg_score))
except ValueError:
print("第{}个学生信息有误".format(i+1))
return
students = sorted(students, key=lambda s: (-s[5], -s[2]))
for student in students:
print("{} {} {} {} {} {:.2f}".format(student[0], student[1], student[2], student[3], student[4], student[5]))
首先,我们通过input()函数获取输入,尝试将其转化为整数类型,并检查其是否符合要求。如果不符合,则抛出ValueError异常,并输出错误信息。
如果输入合法,则我们通过循环输入n个学生的信息,每个学生的信息由一个字符串表示,其中包含学号、姓名和3门课的成绩。我们尝试将这个字符串转化为学生信息,同时检查学号、姓名和成绩是否合法。如果不合法,则抛出ValueError异常,并输出错误信息。
如果所有学生信息都合法,则将其存储在列表中,并根据平均成绩和语文成绩进行排序。最后,我们将排序后的学生信息输出。