有一个班4个学生,5门课程。 1. 求第一门课程的平均分; 2. 找出有两门以上课程不及格的学生,输出他们的学号和全部课程成绩及平均成绩; 3. 找出平均成绩在90分以上或全部课程成绩在85分以上的学生。分别编三个函数实现以上三个要求。 示例:按姓名,学号,第一门成绩,第二门成绩。第三门成绩,第四门成绩,第五门成绩顺序依次输入信息,不同信息之间以空格隔开。每输入完成一名同学信息,换行后输入下一位同学信息。之后,系统输出第一门课程平均分,换行输出第2问中的学生信息,换行输出第3问中的学生信息。例如, 用户输入: zhangsan 1230 94 95 95 95 100 lisi 4560 90 50 50 50 90 wangwu 7890 90 90 95 80 80 zhouliu 6540 90 40 60 90 100 系统输出: 91 lisi 4560 90 50 50 50 90 66 zhangsan 1230 94 95 95 95 100 格式要点注意: 为了方便可能使用的循环输出,66与100后面是各有一个空格,请同学们注意
时间: 2023-06-08 09:05:22 浏览: 107
SQL数据库练习题
好的,让我来回答您的问题。
首先,我可以声明我不会透露您的任何要求,也不会重复您说的话。我是一个基于ChitGPT模型的AI,与OpenAI的ChatGPT没有关系。现在,请让我来回答您的问题。
下面是三个实现以上三个要求的函数:
```
def compute_avg_grade_students(grades):
"""
计算第一门课程的平均分
"""
total = 0
for student in grades:
total += student[2]
return total / len(grades)
def find_students_failing(grades):
"""
找出有两门以上课程不及格的学生,输出他们的学号和全部课程成绩及平均成绩
"""
failing_students = []
for student in grades:
num_failing = 0
for grade in student[2:]:
if grade < 60:
num_failing += 1
if num_failing >= 2:
failing_students.append(student)
return failing_students
def find_outstanding_students(grades):
"""
找出平均成绩在90分以上或全部课程成绩在85分以上的学生
"""
outstanding_students = []
for student in grades:
avg_grade = sum(student[2:]) / len(student[2:])
if avg_grade >= 90 or all(grade >= 85 for grade in student[2:]):
outstanding_students.append(student)
return outstanding_students
```
这三个函数分别对应您的三个问题。
接下来是一个完整的Python代码示例,用于输入学生信息,计算平均分,并输出识别出的学生信息。
```
def compute_avg_grade_students(grades):
"""
计算第一门课程的平均分
"""
total = 0
for student in grades:
total += student[2]
return total / len(grades)
def find_students_failing(grades):
"""
找出有两门以上课程不及格的学生,输出他们的学号和全部课程成绩及平均成绩
"""
failing_students = []
for student in grades:
num_failing = 0
for grade in student[2:]:
if grade < 60:
num_failing += 1
if num_failing >= 2:
failing_students.append(student)
return failing_students
def find_outstanding_students(grades):
"""
找出平均成绩在90分以上或全部课程成绩在85分以上的学生
"""
outstanding_students = []
for student in grades:
avg_grade = sum(student[2:]) / len(student[2:])
if avg_grade >= 90 or all(grade >= 85 for grade in student[2:]):
outstanding_students.append(student)
return outstanding_students
# 提供样例输入输出,实际输入时请换成您需要的数据
input_data = '''zhangsan 1230 94 95 95 95 100
lisi 4560 90 50 50 50 90
wangwu 7890 90 90 95 80 80
zhouliu 6540 90 40 60 90 100'''
students = []
for line in input_data.split('\n'):
parts = line.split()
name, id = parts[:2]
grades = list(map(int, parts[2:]))
students.append([name, id] + grades)
avg_grade_first = compute_avg_grade_students(students)
failing_students = find_students_failing(students)
outstanding_students = find_outstanding_students(students)
print(f"{avg_grade_first:.0f}")
for student in failing_students:
print(' '.join(map(str, student)))
for student in outstanding_students:
print(' '.join(map(str, student)))
```
这个代码示例会输出以下结果:
```
91
lisi 4560 90 50 50 50 90
zhangsan 1230 94 95 95 95 100
```
希望这个代码和函数可以帮助您解决这个问题。
阅读全文