m0_65380619 2023-03-29 10:43 采纳率: 0%
浏览 404
已结题

Python 编写程序

python

输入n(1<n<=100)个学生的信息,包括学号、姓名、语文、数学和英语。学号为4位数字组成,成绩为整数,如果不满足此条件,出现异常,如果输入的n不是数字或者 n<=1或n>100,出现异常,输出“输入的人数必须是数字,大于0并且小于等于100”。要求根据3门功课的平均成绩从高分到低分输出每个学生的学号、姓名、3门功课成绩及平均成绩,若平均成绩相同则按语文成绩从高到低排序。
输入格式:

每组测试数据首先输入一个正整数n(1<n<=100),表示学生人数;然后是n行信息,分别表示学生的学号、姓名(长度不超过10且由英文字母构成的字符串)和3门课成绩(正整数)。
输出格式:

如果n出现错误,出现异常。如果n输入正确,输出排序后的学生信息,每行一个学生信息:学号、姓名、语文、数学、英语、平均成绩(保留2位小数),上面每个数据之间留一个空格。
输入样例:

在这里给出多组。例如:
3
0001 zhangsan 80 95 65
0002 lisi 65 52 56
0003 wangwu 87 86 95
输出样例:

在这里给出相应的输出,文件中与输出一样。例如:
0003 wangwu 87 86 95 89.33
0001 zhangsan 80 95 65 80.00
0002 lisi 65 52 56 57.67

  • 写回答

3条回答 默认 最新

  • 瞬间的未来式 2023-03-29 10:50
    关注

    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异常,并输出错误信息。

    如果所有学生信息都合法,则将其存储在列表中,并根据平均成绩和语文成绩进行排序。最后,我们将排序后的学生信息输出。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月29日
  • 请采纳用户回复 3月29日
  • 创建了问题 3月29日