Menu
Coddy logo textTech

Aggiungere studenti

Fa parte della sezione Logica e flusso del percorso R di Coddy. Lezione 22 di 64.

In questo progetto costruisci un registro dei voti che legge i comandi, uno per riga, e risponde a ciascuno. In cinque passaggi impara ad aggiungere studenti, registrare i voti, riportare le medie e trovare lo studente con il voto più alto. Ogni passaggio estende la stessa funzione gradebook(commands).

ADD ada
GRADE ada 90
AVG ada
REPORT
TOP

I voti sono contenuti in una lista denominata: il nome di ogni studente è associato a un vettore numerico dei voti di quello studente. Una lista è adatta perché ogni studente ha diversi valori.

grades <- list()
grades[["ada"]] <- numeric(0)
grades[["ada"]] <- c(grades[["ada"]], 90)
print(length(grades[["ada"]]))
print(names(grades))

Output:

[1] 1
[1] "ada"

numeric(0) è un vettore numerico vuoto. Assegnare c() non funzionerebbe qui: è NULL e assegnare NULL rimuove una voce dalla lista.

Ogni comando viene suddiviso in base agli spazi, quindi parts[1] è il comando e parts[2] il nome. Una catena if / else if determina cosa fare:

for (cmd in commands) {
  parts <- strsplit(cmd, " ")[[1]]
  name <- parts[2]
  if (parts[1] == "ADD") {
    # gestisci ADD
  }
}

Le risposte vengono raccolte con replies <- c(replies, ...) e restituite alla fine.

challenge icon

Sfida

Facile

Completa gradebook(commands) per il primo comando:

  • ADD <name>: se lo studente è nuovo, registralo senza voti e rispondi added <name>. Se il nome è già registrato, rispondi <name> already exists.

Il codice fornito passa ogni riga di input a gradebook() come un singolo comando e stampa ogni risposta restituita su una riga separata. Un nome è una parola minuscola e l'input contiene solo i comandi descritti finora.

Provalo tu

gradebook <- function(commands) {
  grades <- list()
  replies <- c()
  for (cmd in commands) {
    parts <- strsplit(cmd, " ")[[1]]
    name <- parts[2]
    # Write your code here
  }
  replies
}

# Supplied input/output code: keep it as it is
input <- suppressWarnings(readLines(file("stdin")))
cat(gradebook(input), sep = "\n")
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore R online