Menu
CoddyTech

コース別一覧

CoddyのPythonジャーニー「ロジックとフロー」セクションの一部。レッスン 44/78。

challenge icon

チャレンジ

簡単

このプロジェクトの前の手順で記述した内容をすべて残してください。ファイル全体が実行されるため、student_records と add_student は引き続き存在している必要があります。

list_students_by_course という名前の関数を作成し、1つの引数 course(文字列)を受け取るようにします。この関数は次の処理を行う必要があります。

  1. student_records 辞書を走査し、指定された course に登録されているすべての学生を見つけます。
  2. そのコースに登録されている学生の名前のリストを返します。
  3. そのコースに登録されている学生がいない場合は、空のリストを返します。

次のコードブロックをコードの末尾に追加(置き換え)してください。

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

自分で試してみよう

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)


add_student("Alice", 20, ["Math", "Physics"])
add_student("Bob", 22, ["Biology", "Chemistry"])
add_grade("Alice", 90)
add_grade("Alice", 85)
add_grade("Bob", 75)
print(calculate_average_grade("Alice"))  # Should return 87.5
print(calculate_average_grade("Bob"))  # Should return 75.0
print(calculate_average_grade("Charlie"))  # Non-existent student, should print message and return None
print(calculate_average_grade("Alice"))  # Should return 87.5 again

ロジックとフローのすべてのレッスン

自分で練習してみよう: Pythonオンラインコンパイラ