Note hinzufügen
Teil des Abschnitts Logik & Programmfluss der Ruby-Journey von Coddy. Lektion 50 von 56.
Erweitern Sie nun das System um eine add_grade-Methode. Sie fügt dem :grades-Array des Schülers eine numerische Note hinzu, sofern der Schüler existiert.
Wenn der Name nicht in den Datensätzen enthalten ist, melden Sie dies und brechen Sie ab.
Aufgabe
EinfachBehalten Sie Ihren $student_records Hash und add_student aus der vorherigen Lektion bei. Fügen Sie eine Methode add_grade(name, grade) hinzu, die:
Student '<name>' not found.ausgibt, wenn der Name nicht existiert, und die Methode beendet.- Andernfalls
gradein das:gradesArray des Schülers einfügt undGrade <grade> added for '<name>'.ausgibt.
Ersetzen Sie den Testblock am Ende durch:
add_student("Alice", 20, ["Math", "Physics"])
add_student("Bob", 22, ["Biology", "Chemistry"])
add_grade("Alice", 90)
add_grade("Alice", 85)
add_grade("Bob", 75)
add_grade("Charlie", 80)
puts $student_records.inspectErwartete Ausgabe:
Student 'Alice' added.
Student 'Bob' added.
Grade 90 added for 'Alice'.
Grade 85 added for 'Alice'.
Grade 75 added for 'Bob'.
Student 'Charlie' not found.
{"Alice"=>{:age=>20, :grades=>[90, 85], :courses=>["Math", "Physics"]}, "Bob"=>{:age=>22, :grades=>[75], :courses=>["Biology", "Chemistry"]}}Probier es selbst
$student_records = {}
def add_student(name, age, courses)
if $student_records.key?(name)
puts "Student '#{name}' already exists."
return
end
$student_records[name] = { age: age, grades: [], courses: courses }
puts "Student '#{name}' added."
end
# TODO: def add_grade(name, grade)
add_student("Alice", 20, ["Math", "Physics"])
add_student("Bob", 22, ["Biology", "Chemistry"])
add_grade("Alice", 90)
add_grade("Alice", 85)
add_grade("Bob", 75)
add_grade("Charlie", 80)
puts $student_records.inspect
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Programmfluss
1Strings im Detail
Überblick über String-MethodenString-InterpolationStrings durchlaufenSplitten und VerbindenRückblick – String Weaver4Blocks, Procs & Lambdas
Was ist ein Block?do..end vs. geschweifte KlammernDas Schlüsselwort yieldBlock-ParameterProcs und LambdasRückblick – Benutzerdefinierter Iterator7Hashes Teil 2
Hash.new mit StandardwertenHashes durchlaufenVerschachtelte HashesZusammenführen und TransformierenRückblick – Häufigkeitszähler10Projekt – Schülerdaten
ProjektübersichtSchüler hinzufügen2Bereiche
Was ist ein Bereich?BereichsmethodenBereiche in Case / WhenWiederholung – Übung zu Bereichen5Das Enumerable-Kraftpaket
Select und RejectMap verkettenReduce / Injectcount, all?, any?, none?group_by und partitionsort_by, min_by, max_byZusammenfassung – Datenpipeline8Fortgeschrittene Entscheidungsfindung
Case mit Klassen & Regexwhen mit mehreren WertenTernärer OperatorInline-if / unlessRückblick – NotenklassifiziererÜbe selbstständig: Online-Ruby-Compiler