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 comandi, uno per riga, e risponde a ciascuno di essi. In cinque passaggi impara ad aggiungere studenti, registrare voti, riportare le medie e trovare lo studente migliore. Ogni passaggio estende la stessa funzione gradebook(commands).
ADD ada
GRADE ada 90
AVG ada
REPORT
TOPI voti sono contenuti in una lista con nome: il nome di ogni studente corrisponde a un vettore numerico con i 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 corrispondenza degli spazi, quindi parts[1] è il comando e parts[2] il nome. Una catena if / else if sceglie 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.
Sfida
FacileCompleta gradebook(commands) per il primo comando:
ADD <name>: se lo studente è nuovo, registralo senza voti e rispondiadded <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 a sé. Un nome è una sola parola in minuscolo 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")
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Le stringhe in dettaglio
Sottostringhe con substr()Formattazione con sprintf()Dividere e unireRicerca nelle stringheSostituzione del testoRipasso - Generatore di nomi utente4Matrici
Creazione di matriciIndicizzazione delle matriciRiepiloghi di righe e colonneOperazioni aritmetiche con le matriciRipasso - Schema dei posti a sedere10Flusso di controllo avanzato
La funzione switch()ifelse() vettorialerepeat e breakFunzioni ricorsiveRiepilogo - Classificatore di voti2Ricerche chiave-valore
Ricerche in vettori con nomiControllare le chiaviAggiungere e rimuovere chiaviIterare sui nomiRiepilogo - Sportello titoli5Progetto - Registro dei voti
Aggiungere studentiRegistrare i voti8Ordinamento e raggruppamento
Ordinare i vettoriOrdinare in base a una chiaveRaggruppare con split()Riepiloghi dei gruppiRipasso - Classifica3Insiemi e conteggio
Valori univociOperazioni sugli insiemiTest di appartenenzaConteggio con table()Riepilogo - Ospiti dell’evento6Le funzioni come valori
Funzioni anonimePassare funzioniRestituire funzioniClosure con statoRiepilogo - Regole di sconto9DataFrame
Creare DataFrameColonne e righeFiltrare le righeAggiungere e ordinareRiepilogo - Report delle vendite12Progetto - Gestione delle spese
Registrare le speseSpesa totaleEsercitati da solo: Compilatore R online