Ajouter des élèves
Fait partie de la section Logique et flux d’exécution du Journey R de Coddy. Leçon 22 sur 64.
Dans ce projet, vous construisez un carnet de notes qui lit des commandes, une par ligne, et répond à chacune d’elles. En cinq étapes, il apprend à ajouter des étudiants, à enregistrer des notes, à communiquer les moyennes et à trouver l’étudiant le mieux noté. Chaque étape étend la même fonction gradebook(commands).
ADD ada
GRADE ada 90
AVG ada
REPORT
TOPLes notes sont stockées dans une liste nommée : le nom de chaque étudiant correspond à un vecteur numérique contenant les notes de cet étudiant. Une liste convient, car chaque étudiant possède plusieurs valeurs.
grades <- list()
grades[["ada"]] <- numeric(0)
grades[["ada"]] <- c(grades[["ada"]], 90)
print(length(grades[["ada"]]))
print(names(grades))Sortie :
[1] 1
[1] "ada"numeric(0) est un vecteur numérique vide. L’affectation de c() ne fonctionnerait pas ici : elle vaut NULL, et l’affectation de NULL supprime une entrée de la liste.
Chaque commande est séparée au niveau des espaces, donc parts[1] est la commande et parts[2] le nom. Une chaîne if / else if détermine quoi faire :
for (cmd in commands) {
parts <- strsplit(cmd, " ")[[1]]
name <- parts[2]
if (parts[1] == "ADD") {
# gérer ADD
}
}Les réponses sont rassemblées avec replies <- c(replies, ...) et renvoyées à la fin.
Défi
FacileComplétez gradebook(commands) pour la première commande :
ADD <name>: si l'étudiant est nouveau, enregistrez-le sans notes et répondezadded <name>. Si le nom est déjà enregistré, répondez<name> already exists.
Le code fourni transmet chaque ligne d'entrée à gradebook() comme une commande et affiche chaque réponse renvoyée sur sa propre ligne. Un nom est un mot en minuscules, et l'entrée ne contient que les commandes décrites jusqu'à présent.
Essayez vous-même
gradebook <- function(commands) {
grades <- list()
replies <- c()
for (cmd in commands) {
parts <- strsplit(cmd, " ")[[1]]
name <- parts[2]
# Écrivez votre code ici
}
replies
}
# Code d'entrée/sortie fourni : gardez-le tel quel
input <- suppressWarnings(readLines(file("stdin")))
cat(gradebook(input), sep = "\n")
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique et flux d’exécution
1Les chaînes en profondeur
Sous-chaînes avec substr()Mise en forme avec sprintf()Scinder et joindreRechercher dans les chaînesRemplacer du texteRécapitulatif - Créateur de nom d'utilisateur4Matrices
Créer des matricesIndexer des matricesRécapitulatifs des lignes et des colonnesArithmétique matricielleRécapitulatif - Plan de salle7La famille Apply
lapply et sapplyMap et mapplyFilter et FindReduceRécapitulatif - Pipeline de données10Structures de contrôle avancées
La fonction switch()ifelse() vectorisérepeat et breakFonctions récursivesRécapitulatif – Classificateur de notes2Recherches par clé-valeur
Recherches dans des vecteurs nommésVérifier les clésAjouter et supprimer des clésParcourir les nomsRécapitulatif - Bureau des stocks5Projet - Carnet de notes
Ajouter des élèvesEnregistrer les notes3Ensembles et comptage
Valeurs uniquesOpérations sur les ensemblesTests d’appartenanceCompter avec table()Récapitulatif - Invités à l’événement6Les fonctions comme valeurs
Fonctions anonymesPasser des fonctionsRetourner des fonctionsFermetures avec étatRécapitulatif - Règles de remise9Data Frames
Créer des Data FramesColonnes et lignesFiltrer les lignesAjouter et trierRécapitulatif - Rapport des ventes12Projet - Suivi des dépenses
Enregistrer les dépensesDépenses totalesEntraînez-vous par vous-même : Compilateur R en ligne