Menu
Coddy logo textTech

Récupérer la saisie utilisateur

Fait partie de la section Fondamentaux du Journey R de Coddy. Leçon 34 sur 78.

challenge icon

Défi

Facile

Dans la leçon précédente, vous avez créé un message de bienvenue pour le calculateur de partage d’addition. Ajoutez maintenant la fonctionnalité permettant de recueillir les entrées utilisateur pour le calcul de l’addition.

Après votre message de bienvenue existant, lisez trois entrées utilisateur :

  1. Le montant total de l’addition
  2. Le pourcentage de pourboire (sous forme de nombre entier, par exemple 15 pour 15 %)
  3. Le nombre de personnes qui partagent l’addition

Dans les scripts R qui s’exécutent de manière non interactive (comme sur cette plateforme), les données sont lues depuis le flux d’entrée standard. Pour cela, ouvrez d’abord une connexion vers stdin à l’aide de file(), puis lisez chaque ligne avec readLines() et fermez la connexion lorsque vous avez terminé :

con <- file("stdin", "r")
bill <- as.numeric(suppressWarnings(readLines(con, n = 1)))
tip_percent <- as.numeric(suppressWarnings(readLines(con, n = 1)))
people <- as.numeric(suppressWarnings(readLines(con, n = 1)))
close(con)

Voici le rôle de chaque partie :

  • file("stdin", "r") : ouvre le flux d’entrée standard en lecture et le stocke dans con
  • readLines(con, n = 1) : lit exactement une ligne depuis cette connexion. Remarque : readLines() est différent de readline() : readLines() fonctionne avec les connexions de fichiers (y compris stdin) et peut lire plusieurs lignes à la fois grâce à n =, tandis que readline() ne fonctionne qu’en mode interactif dans la console R
  • suppressWarnings(...) : masque les avertissements sans gravité qui apparaissent lors de la lecture depuis stdin de cette manière. Lorsque R lit depuis stdin dans un script, il produit parfois un avertissement tel que "incomplete final line", même lorsque tout fonctionne correctement. En englobant l’appel dans suppressWarnings(), ces messages sont masqués afin de ne pas encombrer votre sortie. Cela n’affecte pas les valeurs lues
  • as.numeric(...) : convertit l’entrée textuelle en nombre
  • close(con) : ferme la connexion après la lecture de toutes les entrées

Stockez les trois valeurs dans des variables nommées bill, tip_percent et people.

Après avoir lu les entrées, affichez un message de confirmation indiquant ce qui a été saisi, selon le format suivant :

Bill: $[bill]
Tip: [tip_percent]%
People: [people]

Utilisez cat() pour toutes les sorties et incluez les caractères de nouvelle ligne \n lorsque cela est nécessaire. Utilisez sep = "" dans chaque appel à cat() afin d’éviter les espaces indésirables.

Par défaut, cat() insère un espace entre chaque élément qu’il affiche. Par exemple :

cat("Bill: $", 120, "\n")   # prints: Bill: $ 120 

Remarquez les espaces indésirables entre $ et 120, ainsi qu’avant la nouvelle ligne. Ajouter sep = "" indique à cat() d’utiliser une chaîne vide comme séparateur, afin que rien ne soit inséré entre les éléments :

cat("Bill: $", 120, "\n", sep = "")   # prints: Bill: $120

Appliquez ce modèle aux trois lignes de confirmation :

cat("Bill: $", bill, "\n", sep = "")
cat("Tip: ", tip_percent, "%\n", sep = "")
cat("People: ", people, "\n", sep = "")

Par exemple, si les entrées sont 120, 18 et 4, la sortie complète devrait être :

Welcome to the Bill Split Calculator!
Let's split your bill fairly.
Bill: $120
Tip: 18%
People: 4

Essayez vous-même

# TODO: Write your code below
# Use cat() to display the welcome message
# Remember to use \n for new lines
cat("Welcome to the Bill Split Calculator!\nLet's split your bill fairly.\n")

Toutes les leçons de Fondamentaux

Entraînez-vous par vous-même : Compilateur R en ligne