Menu
CoddyTech

Filtern mit 'where'

Teil des Abschnitts Logik & Ablauf der Dart-Journey von Coddy. Lektion 11 von 65.

Während map() jedes Element in einer Liste transformiert, möchten Sie manchmal nur Elemente behalten, die bestimmte Kriterien erfüllen. Die where()-Methode ermöglicht es Ihnen, eine Liste zu filtern, indem jedes Element gegen eine Bedingung geprüft wird und nur diejenigen behalten werden, die den Test bestehen.

Die Methode where() nimmt eine Testfunktion entgegen, die für jedes Element true oder false zurückgibt. Elemente, die true zurückgeben, werden in das Ergebnis aufgenommen, während diejenigen, die false zurückgeben, herausgefiltert werden.

List<int> scores = [45, 78, 92, 33, 67, 88];

// Filtern, um nur Ergebnisse über 50 zu behalten
var passingScores = scores.where((score) => score > 50);
print(passingScores);  // (78, 92, 67, 88)

Dieser Filteransatz ist viel sauberer, als manuell eine Liste zu durchlaufen und eine neue Sammlung aufzubauen. Die where()-Methode stellt ein grundlegendes Muster in der Datenverarbeitung dar, das es Ihnen ermöglicht, deklarativ anzugeben, was Sie behalten möchten, anstatt wie es extrahiert werden soll.

challenge icon

Aufgabe

Einfach

Erstellen Sie ein Programm, das ein System zur Verfolgung der Schülerleistung verwaltet, indem es Schüler basierend auf ihren Testergebnissen filtert. Ihr Programm sollte:

  1. Einen String-Input einlesen, der den Klassennamen darstellt
  2. Mehrere Integer-Inputs einlesen, die Testergebnisse von Schülern darstellen (die Eingabe endet, wenn Sie -1 erhalten)
  3. Einen Integer-Input einlesen, der den Schwellenwert für die Mindestpunktzahl zum Bestehen darstellt
  4. Die Methode where() verwenden, um nur die Ergebnisse zu filtern und zu behalten, die größer oder gleich dem Schwellenwert sind
  5. Die Filterergebnisse im unten gezeigten exakten Format ausgeben

Wenn zum Beispiel der Klassenname "Mathematics 101" ist, die Ergebnisse 85, 42, 78, 91, 55, 88 sind und der Schwellenwert 70 ist, sollte Ihr Programm Folgendes ausgeben:

Class: Mathematics 101
Original scores: [85, 42, 78, 91, 55, 88]
Minimum passing score: 70
Filtering scores >= 70
Passing scores: (85, 78, 91, 88)
Students passed: 4 out of 6
Pass rate: 66.67%

Wenn der Klassenname "Science Lab" ist, die Ergebnisse 45, 38, 52 sind und der Schwellenwert 60 ist, sollte Ihr Programm Folgendes ausgeben:

Class: Science Lab
Original scores: [45, 38, 52]
Minimum passing score: 60
Filtering scores >= 60
Passing scores: ()
Students passed: 0 out of 3
Pass rate: 0.00%

Wenn der Klassenname "History" ist, die Ergebnisse 95, 88, 92 sind und der Schwellenwert 80 ist, sollte Ihr Programm Folgendes ausgeben:

Class: History
Original scores: [95, 88, 92]
Minimum passing score: 80
Filtering scores >= 80
Passing scores: (95, 88, 92)
Students passed: 3 out of 3
Pass rate: 100.00%

Ihr Programm muss die Methode where() verwenden, um Ergebnisse zu filtern, die größer oder gleich dem Schwellenwert sind. Das gefilterte Ergebnis wird im Klammerformat als Iterable angezeigt. Berechnen Sie die Bestehensquote als Prozentsatz mit genau 2 Dezimalstellen nach der Formel: (passing students / total students) * 100.

Probier es selbst

import 'dart:io';

void main() {
  // Klassennamen lesen
  String? className = stdin.readLineSync();
  
  // Punktzahlen lesen, bis -1 eingegeben wird
  List<int> scores = [];
  while (true) {
    int score = int.parse(stdin.readLineSync()!);
    if (score == -1) break;
    scores.add(score);
  }
  
  // Mindestpunktzahl zum Bestehen lesen
  int threshold = int.parse(stdin.readLineSync()!);
  
  // TODO: Schreiben Sie Ihren Code unten
  // Verwenden Sie die where()-Methode, um Punktzahlen >= threshold zu filtern
  
  // Ergebnisse im erforderlichen Format ausgeben
  print('Class: $className');
  print('Original scores: $scores');
  print('Minimum passing score: $threshold');
  print('Filtering scores >= $threshold');
  // Bestehende Punktzahlen, Anzahl der bestandenen Schüler und Erfolgsquote ausgeben
}
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Ablauf

Übe selbstständig: Online-Dart-Compiler