成績優秀者
CoddyのPythonジャーニー「Logic & Flow」セクションの一部 — レッスン 45/78。
チャレンジ
簡単1つの引数 threshold (float) を取る filter_top_students という名前の関数を作成してください。この関数は以下の処理を行います。
student_records辞書を反復処理し、平均点が指定されたthresholdよりも高いすべての学生を見つけます。- 各学生の平均点を取得するために
calculate_average_grade関数を使用します。 - 成績優秀な学生の名前のリストを返します。
- 条件を満たす学生がいない場合は、空のリストを返します。
コードの最後に以下のコードブロックを追加(または置換)してください:
add_student("Alice", 20, ["Math", "Physics"])
add_student("Bob", 22, ["Math", "Biology"])
add_student("Diana", 23, ["Chemistry", "Physics"])
add_grade("Alice", 90)
add_grade("Alice", 85)
add_grade("Bob", 75)
add_grade("Diana", 95)
print(filter_top_students(80)) # ["Alice", "Diana"] を返す必要があります
print(filter_top_students(90)) # ["Diana"] を返す必要があります
print(filter_top_students(100)) # 空のリストを返す必要があります辞書、セット、そして意思決定を組み合わせて、完全に機能するプログラムをどのように作成したか、少し振り返ってみてください。素晴らしい仕事です! 🚀
自分で試してみよう
student_records = {}
def add_student(name, age, courses):
if name in student_records:
print(f"Student '{name}' already exists.")
return
student_records[name] = {"age": age, "grades": set(), "courses": set(courses)}
print(f"Student '{name}' added successfully.")
def add_grade(name, grade):
if name not in student_records:
print(f"Student '{name}' not found.")
return
student_records[name]["grades"].add(grade)
print(f"Grade {grade} added for student '{name}'.")
def is_enrolled(name, course):
if name not in student_records:
print(f"Student '{name}' not found.")
return False
return course in student_records[name]["courses"]
def calculate_average_grade(name):
if name not in student_records:
print(f"Student '{name}' not found.")
return None
grades = student_records[name]["grades"]
if not grades:
return 0
return sum(grades) / len(grades)
def list_students_by_course(course):
students_in_course = []
for name, details in student_records.items():
if course in details["courses"]:
students_in_course.append(name)
return students_in_course
add_student("Alice", 20, ["Math", "Physics"])
add_student("Bob", 22, ["Math", "Biology"])
add_student("Diana", 23, ["Chemistry", "Physics"])
print(list_students_by_course("Math")) # Should return ["Alice", "Bob"]
print(list_students_by_course("Physics")) # Should return ["Alice", "Diana"]
print(list_students_by_course("Biology")) # Should return ["Bob"]
print(list_students_by_course("History")) # Should return an empty list