Menu
Coddy logo textTech

Obtener la entrada del usuario

Parte de la sección Fundamentos del Journey de R de Coddy. Lección 34 de 78.

challenge icon

Desafío

Fácil

En la lección anterior, creaste un mensaje de bienvenida para la Calculadora de división de cuenta. Ahora, añade la funcionalidad para recopilar la entrada del usuario para el cálculo de la cuenta.

Después de tu mensaje de bienvenida existente, lee tres entradas del usuario:

  1. El importe total de la cuenta
  2. El porcentaje de propina (como un número entero, por ejemplo, 15 para el 15 %)
  3. El número de personas que dividirán la cuenta

En los scripts de R que se ejecutan de forma no interactiva (como en esta plataforma), la entrada se lee del flujo de entrada estándar. Para hacerlo, primero abre una conexión a stdin usando file(), después lee cada línea con readLines() y cierra la conexión cuando hayas terminado:

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)

Esto es lo que hace cada parte:

  • file("stdin", "r"): abre el flujo de entrada estándar para leer y lo almacena en con
  • readLines(con, n = 1): lee exactamente una línea de esa conexión. Nota: readLines() es diferente de readline(): readLines() funciona con conexiones de archivos (incluido stdin) y puede leer varias líneas a la vez usando n =, mientras que readline() solo funciona de forma interactiva en la consola de R
  • suppressWarnings(...): silencia las advertencias inofensivas que aparecen al leer de stdin de esta manera. Cuando R lee de stdin en un script, a veces produce una advertencia como "incomplete final line" incluso cuando todo funciona correctamente. Envolver la llamada en suppressWarnings() oculta estos mensajes para que no saturen tu salida. No afecta a los valores que se leen
  • as.numeric(...): convierte la entrada de texto en un número
  • close(con): cierra la conexión después de leer todas las entradas

Almacena los tres valores en variables llamadas bill, tip_percent y people.

Después de leer las entradas, muestra un mensaje de confirmación que indique lo que se introdujo con el siguiente formato:

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

Usa cat() para toda la salida e incluye caracteres de nueva línea \n donde sea necesario. Usa sep = "" en cada llamada a cat() para evitar espacios no deseados.

De forma predeterminada, cat() inserta un espacio entre cada elemento que imprime. Por ejemplo:

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

Observa los espacios no deseados entre $ y 120, y antes de la nueva línea. Añadir sep = "" indica a cat() que use una cadena vacía como separador, de modo que no se inserte nada entre los elementos:

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

Aplica este patrón a las tres líneas de confirmación:

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

Por ejemplo, si las entradas son 120, 18 y 4, la salida completa debería ser:

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

Pruébalo tú mismo

# 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")

Todas las lecciones de Fundamentos

Practica por tu cuenta: Compilador de R online