'where' ile Filtreleme
Coddy'nin Dart Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 11 / 65.
map() bir listedeki her öğeyi dönüştürürken, bazen sadece belirli kriterleri karşılayan öğeleri tutmak istersiniz. where() yöntemi, her bir öğeyi bir koşula karşı test ederek ve yalnızca testi geçenleri tutarak bir listeyi filtrelemenize olanak tanır.
where() yöntemi, her bir öğe için true veya false döndüren bir test fonksiyonu alır. true döndüren öğeler sonuca dahil edilirken, false döndürenler filtrelenir.
List<int> scores = [45, 78, 92, 33, 67, 88];
// Sadece 50'nin üzerindeki puanları tutmak için filtrele
var passingScores = scores.where((score) => score > 50);
print(passingScores); // (78, 92, 67, 88)Bu filtreleme yaklaşımı, bir liste üzerinde manuel olarak döngü kurmaktan ve yeni bir koleksiyon oluşturmaktan çok daha temizdir. where() yöntemi, veri işlemede temel bir kalıbı temsil eder ve veriyi nasıl çıkaracağınızdan ziyade neyi tutmak istediğinizi bildirimsel olarak belirtmenize olanak tanır.
Görev
KolayÖğrencileri test puanlarına göre filtreleyerek bir öğrenci performans takip sistemini yöneten bir program oluşturun. Programınız şunları yapmalıdır:
- Sınıf adını temsil eden bir dize (string) girdisi okuyun
- Öğrenci test puanlarını temsil eden birden fazla tam sayı girdisi okuyun (girdi
-1aldığınızda sona erecektir) - Minimum geçme puanı eşiğini temsil eden bir tam sayı girdisi okuyun
- Eşiğe eşit veya eşikten büyük olan puanları filtrelemek ve yalnızca bunları tutmak için
where()yöntemini kullanın - Filtreleme sonuçlarını aşağıda gösterilen tam formatta yazdırın
Örneğin, sınıf adı "Mathematics 101", puanlar 85, 42, 78, 91, 55, 88 ve eşik 70 ise programınız şu çıktıyı vermelidir:
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%Eğer sınıf adı "Science Lab", puanlar 45, 38, 52 ve eşik 60 ise programınız şu çıktıyı vermelidir:
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%Eğer sınıf adı "History", puanlar 95, 88, 92 ve eşik 80 ise programınız şu çıktıyı vermelidir:
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%Programınız, eşiğe eşit veya eşikten büyük puanları filtrelemek için where() yöntemini kullanmalıdır. Filtrelenmiş sonuç, bir yinelenebilir (iterable) olarak parantez formatında görüntülenecektir. Başarı oranını, (passing students / total students) * 100 formülünü kullanarak tam olarak 2 ondalık basamaklı bir yüzde olarak hesaplayın.
Kendin dene
import 'dart:io';
void main() {
// Sınıf adını oku
String? className = stdin.readLineSync();
// -1 ile karşılaşana kadar puanları oku
List<int> scores = [];
while (true) {
int score = int.parse(stdin.readLineSync()!);
if (score == -1) break;
scores.add(score);
}
// Minimum geçme puanı eşiğini oku
int threshold = int.parse(stdin.readLineSync()!);
// TODO: Kodunuzu aşağıya yazın
// Puanları >= threshold şeklinde filtrelemek için where() metodunu kullanın
// Sonuçları istenen formatta yazdırın
print('Class: $className');
print('Original scores: $scores');
print('Minimum passing score: $threshold');
print('Filtering scores >= $threshold');
// Geçen puanları, geçen öğrenci sayısını ve geçme oranını yazdırın
}Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Mantık & Akış bölümündeki tüm dersler
1İleri Düzey Liste İşlemleri
Liste Özellikleri: first & lastListe Durumu: isEmpty & isNotEmptyBir Listeyi Tersine ÇevirmeListeye Ekleme: insertListeden Silme: removeWhereListede Bulma: indexOfBir Listeyi SıralamaBir Listeyi KarıştırmaÖzet - Liste Düzenleyici4İleri Seviye Map İşlemleri
Map Üzerinde GezinmeAnahtar ve Değer KontrolüMap Özellikleri: keys & valuesKoşullu Ekleme: putIfAbsentMap'ten Öge Kaldırmaİç İçe Map'lerÖzet - Envanter Güncelleme7İleri Seviye Fonksiyonlar
Anonim FonksiyonlarFonksiyonları Argüman Olarak AktarmaClosure'ları AnlamakÖzyinelemeye GirişÖzyinelemeli Fonksiyon: Geri SayımÖzyinelemeli Fonksiyon: FaktöriyelÖzet - Liste İşleyici10Son Meydan Okumalar
Meydan Okuma: Not SıralayıcıMeydan Okuma: Sesli Harf SayacıMeydan Okuma: FizzBuzz2Fonksiyonel Liste İşlemleri
'map' ile Dönüştürme'where' ile Filtreleme'.toList()' Kullanımı'any' ile Koşul Kontrolü'every' ile Koşullar'firstWhere' ile BulmaÖzet - Veri Filtreleme5Proje: Alışveriş Sepeti Hesaplayıcı
Proje KurulumuSepete Ürün Ekleme3Kümeler
Küme Nedir?Küme OluşturmaKümelere Eleman Ekleme ve ÇıkarmaKüme İçinde Eleman KontrolüListeyi Kümeye DönüştürmeKüme BirleşimiKüme KesişimiKüme FarkıÖzet - Benzersiz Davetli ListesiKendi başına pratik yap: Online Dart derleyicisi