Menu
Coddy logo textTech

Öğ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şturursun. Beş adım boyunca öğrenciler eklemeyi, notları kaydetmeyi, ortalamaları bildirmeyi ve en başarılı öğrenciyi bulmayı öğrenir. Her adım aynı gradebook(commands) işlevini genişletir.

ADD ada
GRADE ada 90
AVG ada
REPORT
TOP

Notlar adlandırılmış bir listede tutulur: her öğrencinin adı, o öğrencinin notlarını içeren sayısal bir vektörle eşleştirilir. Bir liste uygundur çünkü her öğrenci birden çok değer barındırı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: NULL değeridir ve NULL atamak bir liste girdisini kaldırır.

Her komut boşluklarda 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 işle
  }
}

Yanıtlar replies <- c(replies, ...) ile toplanır ve sonunda döndürülür.

challenge icon

Görev

Kolay

İlk komut için gradebook(commands) işlevini tamamlayın:

  • ADD <name>: öğrenci yeniyse, onu not olmadan kaydedin ve added <name> yanıtını verin. İsim zaten kayıtlıysa <name> already exists yanıtını verin.

Sağlanan kod, her giriş 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. Bir isim, küçük harflerden oluşan tek bir kelimedir 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 girdi/çıktı kodu: olduğu gibi bırakın
input <- suppressWarnings(readLines(file("stdin")))
cat(gradebook(input), sep = "\n")
quiz iconKendini test et

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

Kendi başına pratik yap: Online R derleyicisi