Lista według kursu
Część sekcji Logika i przepływ programu ścieżki GDScript w Coddy. Lekcja 47 z 78.
Wyzwanie
ŁatwyWypisz studentów uczęszczających na kurs. Zachowaj wszystko, co napisałeś w poprzednich krokach.
1. Funkcja. Poniżej pozostałych funkcji napisz list_students_by_course(course: String) -> Array. Przechodzi ona po student_records i zwraca tablicę z nazwiskami studentów, których zestaw "courses" zawiera ten kurs, w kolejności, w jakiej zostali dodani. Jeśli nikt nie uczęszcza na ten kurs, zwraca pustą tablicę.
2. Polecenie. Dodaj gałąź dla course <course>, na przykład course Math, powyżej ["show"]. Wypisuje ona tablicę zwracaną przez list_students_by_course(). Dla poleceń
add Alice 20 Math Physics
add Bob 22 Math Biology
add Diana 23 Chemistry Physics
course Math
course Physics
course Biology
course History
exitwynik to:
Student 'Alice' added successfully.
Student 'Bob' added successfully.
Student 'Diana' added successfully.
["Alice", "Bob"]
["Alice", "Diana"]
["Bob"]
[]
Goodbye!Spróbuj swoich sił
extends Node
# Każdy uczeń: imię -> {"age": int, "grades": Array, "courses": zbiór nazw kursów}
var student_records := {}
func _ready():
while true:
var parts := Array(OS.read_string_from_stdin().split(" ", false))
match parts:
["add", var student, var age, ..]:
add_student(student, int(age), parts.slice(3))
["grade", var student, var grade]:
add_grade(student, int(grade))
["enrolled", var student, var course]:
print(is_enrolled(student, course))
["average", var student]:
var average := calculate_average_grade(student)
if average >= 0:
print("Average grade of '%s': %.2f" % [student, average])
["show"]:
print(student_records)
["exit"]:
print("Goodbye!")
break
func add_student(student_name: String, age: int, courses: Array) -> void:
if student_records.has(student_name):
print("Student '%s' already exists." % student_name)
return
var course_set := {}
for course in courses:
course_set[course] = true
student_records[student_name] = {"age": age, "grades": [], "courses": course_set}
print("Student '%s' added successfully." % student_name)
func add_grade(student_name: String, grade: int) -> void:
if not student_records.has(student_name):
print("Student '%s' not found." % student_name)
return
student_records[student_name]["grades"].append(grade)
print("Grade %d added for student '%s'." % [grade, student_name])
func is_enrolled(student_name: String, course: String) -> bool:
if not student_records.has(student_name):
print("Student '%s' not found." % student_name)
return false
return student_records[student_name]["courses"].has(course)
func calculate_average_grade(student_name: String) -> float:
if not student_records.has(student_name):
print("Student '%s' not found." % student_name)
return -1.0
var grades: Array = student_records[student_name]["grades"]
if grades.is_empty():
return 0.0
var total := 0
for grade in grades:
total += grade
return float(total) / grades.size()
Wszystkie lekcje w sekcji Logika i przepływ programu
1Łańcuchy znaków — zagadnienia zaawansowane
Metody łańcuchów znakówWyszukiwanie w łańcuchach znakówZastępowanie i przycinanieDzielenie i łączeniePodsumowanie — sprawdzanie nazwy użytkownika4Słowniki, część 2
Zagnieżdżone słownikiTablice słownikówŁączenie słownikówKopiowanie słownikówPodsumowanie – licznik częstotliwości7Typy wyliczeniowe
Czym jest typ wyliczeniowy?Definiowanie typu wyliczeniowegoWartości typu wyliczeniowegoTypy wyliczeniowe w matchPowtórka – sygnalizacja świetlna10Zaawansowane funkcje
Zwracanie wielu wartościFunkcje lambda — część 1Funkcje lambda — część 2Powtórka — sortowanie za pomocą lambdaFunkcje rekurencyjne — część 1Funkcje rekurencyjne — część 2Powtórka — sumowanie zagnieżdżonej tablicy13System zarządzania zapasami
Omówienie projektuDodawanie produktu2Zaawansowane podejmowanie decyzji
Dopasowanie ze zmiennymiStrażnicy dopasowaniaWzorce tablicWzorce słownikówSprawdzanie przynależnościPowtórka — parser poleceń5Aplikacja książki kontaktów
Wyświetlanie menuDodawanie kontaktu8Menedżer danych studentów
Przegląd projektuDodaj studenta3Tablice wielowymiarowe
Podstawy tablic 2DDostęp do elementów tablic 2DPętle zagnieżdżone z tablicami 2DPodsumowanie — tablice 2DTablice postrzępioneTypowe wzorce tablic 2DPodsumowanie — plansza do gry6Zbiory ze słownikami
Czym jest zbiór?Słownik jako zbiórDodawanie i usuwanieSuma i część wspólnaRóżnica zbiorówPowtórka – usuwanie duplikatów9Zaawansowana agregacja danych
Sumowanie wartościZnajdowanie minimum i maksimumSortowanie niestandardowePodsumowanie – Sortownik słownikówPoćwicz samodzielnie: Kompilator GDScript online