Récapitulatif - Calculatrice sécurisée
Fait partie de la section Logique et flux d’exécution du Journey R de Coddy. Leçon 56 sur 64.
Défi
DifficileComplétez evaluate(expr). Une expression est de la forme <number> <operator> <number>, avec des espaces autour de l’opérateur, par exemple 8 / 2. Levez des erreurs avec stop() pour chaque problème, en les vérifiant dans cet ordre :
expected: number operator numberlorsqu’il n’y a pas exactement trois parties'<part>' is not a numberpour la première partie correspondant à un nombre qui ne peut pas être convertie, par exemple'x' is not a numberunknown operator <op>lorsque l’opérateur n’est pas+,-,*ou/division by zero
Sinon, renvoyez le résultat, arrondi à quatre décimales avec round(value, 4).
Complétez ensuite run_all(exprs) : évaluez chaque expression dans tryCatch() et renvoyez une ligne par expression, 8 / 2 = 4 ou 5 / 0 -> error: division by zero.
Le code fourni transmet chaque ligne d’entrée à run_all() et affiche chaque ligne renvoyée.
Essayez vous-même
evaluate <- function(expr) {
# Écrivez votre code ici
0
}
run_all <- function(exprs) {
# Écrivez votre code ici
character(0)
}
# Code d'entrée/sortie fourni : gardez-le tel quel
input <- suppressWarnings(readLines(file("stdin")))
cat(run_all(input), sep = "\n")
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 notes8Trier et regrouper
Trier des vecteursTrier selon une cléRegrouper avec split()Synthèses des groupesRécapitulatif - Classement11Gestion des erreurs
Lever des erreurs avec stop()Intercepter avec tryCatch()Avertissements et finallyValider les entréesRécapitulatif - Calculatrice sécurisée3Ensembles 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