Veri Dönüştürücü
Coddy'nin Ruby Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 56 / 56.
Bitirme projesi mücadelesi: bir veri kümesini özet rapora yeniden şekillendirin. Filtreleme, eşleme, gruplama, hata işleme ve yöntem tanımını tek bir programda birleştirin.
Görev
Ortastudents dizisi verilmiştir. Her girişte :id, :grades (muhtemelen boş olabilen bir tamsayı dizisi) ve :subjects (bir string dizisi) bulunur.
İki anahtara sahip bir hash döndüren transform_dataset(students) metodunu tanımlayın:
:qualified_ids: en az bir notu olan ve all notları kesinlikle70değerinden büyük olan öğrencilerin:iddeğerlerinin sıralanmış dizisi (all?kullanın).:subject_counts: nitelikli öğrencilerin aldığı her dersi, o dersi alan nitelikli öğrenci sayısına eşleyen bir hash.
Bir öğrencinin :grades dizisi boşsa öğrenci nitelikli değildir; onu sessizce atlayın.
Ardından metodu çağırın ve şunları yazdırın:
,ile birleştirilmiş ve başınaQualified:eklenmiş nitelikli kimlikler. Hiçbiri yoksaQualified: (none)yazdırın.- Her ders için alfabetik olarak sıralanmış biçimde
<subject>: <count>formatında bir satır.
Varsayılan students için çıktı şöyledir:
Qualified: S1, S4
biology: 1
history: 1
math: 2
physics: 1Kendin dene
students = [
{ id: "S1", grades: [85, 92, 78], subjects: ["math", "physics"] },
{ id: "S2", grades: [65, 80, 90], subjects: ["math", "biology"] },
{ id: "S3", grades: [], subjects: ["art"] },
{ id: "S4", grades: [88, 95], subjects: ["math", "biology", "history"] },
{ id: "S5", grades: [70, 75], subjects: ["chemistry"] }
]
# TODO: def transform_dataset(students), return { qualified_ids:, subject_counts: }
# TODO: nitelikli kimlikleri ve konu sayılarını yazdır
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Mantık ve Akış bölümündeki tüm dersler
1Dizeler Detaylı İnceleme
Dize Metotlarına Genel BakışDize EnterpolasyonuDizeler Üzerinde YinelemeBölme ve BirleştirmeTekrar - Dize Dokuyucu4Bloklar, Proc'lar ve Lambda'lar
Blok Nedir?do..end ve Süslü Parantezleryield Anahtar SözcüğüBlok ParametreleriProc'lar ve Lambda'larÖzet - Özel Yineleyici7Hash'ler 2. Bölüm
Varsayılanlarla Hash.newHash'ler Üzerinde Yinelemeİç İçe Hash'lerBirleştirme ve DönüştürmeTekrar - Frekans Sayacı10Proje - Öğrenci Kayıtları
Projeye Genel BakışÖğrenci Ekle5Enumerable Gücü
Seçme ve ReddetmeMap ZincirlemeReduce / Injectcount, all?, any?, none?group_by ve partitionsort_by, min_by, max_byTekrar - Veri HattıKendi başına pratik yap: Online Ruby derleyicisi