Öğrenci Ekleme
Coddy'nin R Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 22 / 64.
Bu projede, komutları satır başına bir tane olacak şekilde okuyan ve her birine yanıt veren bir not defteri oluşturacaksın. Beş adım boyunca öğrenci eklemeyi, not kaydetmeyi, ortalamaları bildirmeyi ve en başarılı öğrenciyi bulmayı öğrenecek. Her adım aynı gradebook(commands) işlevini genişletir.
ADD ada
GRADE ada 90
AVG ada
REPORT
TOPNotlar, adlandırılmış bir listede tutulur: her öğrencinin adı, o öğrencinin notlarından oluşan sayısal bir vektöre karşılık gelir. Liste uygundur çünkü her öğrencinin birden fazla değeri vardır.
grades <- list()
grades[["ada"]] <- numeric(0)
grades[["ada"]] <- c(grades[["ada"]], 90)
print(length(grades[["ada"]]))
print(names(grades))Çıktı:
[1] 1
[1] "ada"numeric(0), boş bir sayısal vektördür. Burada c() atamak işe yaramaz: bu NULL değeridir ve NULL atamak listedeki bir öğeyi kaldırır.
Her komut boşluklardan bölünür; bu nedenle parts[1] komut, parts[2] ise addır. Ne yapılacağını bir if / else if zinciri seçer:
for (cmd in commands) {
parts <- strsplit(cmd, " ")[[1]]
name <- parts[2]
if (parts[1] == "ADD") {
# ADD işlemini işle
}
}Yanıtlar replies <- c(replies, ...) ile toplanır ve sonunda döndürülür.
Görev
Kolayİlk komut için gradebook(commands) işlevini tamamla:
ADD <name>: öğrenci yeniyse, onu notu olmadan kaydet veadded <name>yanıtını ver. İsim zaten kayıtlıysa,<name> already existsyanıtını ver.
Sağlanan kod, her girdi satırını tek bir komut olarak gradebook() işlevine aktarır ve döndürülen her yanıtı kendi satırında yazdırır. İsim, küçük harflerden oluşan tek bir sözcüktür ve girdi yalnızca şimdiye kadar açıklanan komutları içerir.
Kendin dene
gradebook <- function(commands) {
grades <- list()
replies <- c()
for (cmd in commands) {
parts <- strsplit(cmd, " ")[[1]]
name <- parts[2]
# Kodunuzu buraya yazın
}
replies
}
# Sağlanan giriş/çıkış kodu: olduğu gibi bırakın
input <- suppressWarnings(readLines(file("stdin")))
cat(gradebook(input), sep = "\n")
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
1Dizeleri Derinlemesine
substr() ile Alt Dizelersprintf() ile BiçimlendirmeBölme ve BirleştirmeDizelerde AramaMetin DeğiştirmeTekrar - Kullanıcı Adı Oluşturucu4Matrisler
Matris OluşturmaMatrisleri İndekslemeSatır ve Sütun ÖzetleriMatris AritmetiğiTekrar - Oturma Planı2Anahtar-Değer Aramaları
Adlandırılmış Vektör AramalarıAnahtarları DenetlemeAnahtar Ekleme ve KaldırmaAdlar Üzerinde DöngüTekrar - Hisse Senedi Masası5Proje - Not Defteri
Öğrenci EklemeNotları Kaydetme3Kümeler ve Sayma
Benzersiz DeğerlerKüme İşlemleriÜyelik Testleritable() ile SaymaTekrar - Etkinlik Konukları6Değer Olarak Fonksiyonlar
Anonim FonksiyonlarFonksiyonları GeçirmeFonksiyon DöndürmeDurum Bilgili Closure'larTekrar - İndirim Kuralları9Veri Çerçeveleri
Veri Çerçeveleri OluşturmaSütunlar ve SatırlarSatırları FiltrelemeEkleme ve SıralamaTekrar - Satış Raporu12Proje - Harcama Takipçisi
Harcamaları KaydetmeToplam HarcamaKendi başına pratik yap: Online R derleyicisi