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
TOPI 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.
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 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")
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