Obtener la entrada del usuario
Parte de la sección Fundamentos del Journey de R de Coddy. Lección 34 de 78.
Desafío
FácilEn 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:
- El importe total de la cuenta
- El porcentaje de propina (como un número entero, por ejemplo,
15para el 15 %) - 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 enconreadLines(con, n = 1): lee exactamente una línea de esa conexión. Nota:readLines()es diferente dereadline():readLines()funciona con conexiones de archivos (incluidostdin) y puede leer varias líneas a la vez usandon =, mientras quereadline()solo funciona de forma interactiva en la consola de RsuppressWarnings(...): silencia las advertencias inofensivas que aparecen al leer destdinde esta manera. Cuando R lee destdinen un script, a veces produce una advertencia como "incomplete final line" incluso cuando todo funciona correctamente. Envolver la llamada ensuppressWarnings()oculta estos mensajes para que no saturen tu salida. No afecta a los valores que se leenas.numeric(...): convierte la entrada de texto en un númeroclose(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: $120Aplica 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: 4Prué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
4Operadores Parte 2
Operadores lógicos (AND, OR)Operadores lógicos Parte 2 (NOT)Resumen - Lógica simpleLógica vectorizada Parte 1Lógica vectorizada Parte 27Calculadora para dividir la cuenta
Mensaje de bienvenidaObtener la entrada del usuario2Variables y tipos de datos
Tipo de dato numéricoTipo de dato enteroTipo de dato de caracteresTipo de dato lógicoComprobación de tipos de datosConvenciones de nomenclaturaValores faltantes: NAResumen - Creación de variables8Bucles
Bucle ForBucle WhileBreakNext (Continue)Repaso - FactorialGeneración de secuencias (seq, :)Bucles anidadosRepaso - Entrada dinámica3Operadores Parte 1
Operadores aritméticosDivisión entera y móduloOperadores de asignaciónRepaso - Matemáticas simplesOperadores de comparación6E/S básica
Imprimir salidaCat para salidaSalida con variablesLectura de entrada con readline()Conceptos básicos de conversión de tiposResumen - Calculadora de edadResumen - Verdadero o falso9Funciones
Declarar una funciónArgumentos de una funciónValores de retornoRepaso - Función SigmaRepaso - Función de validaciónValores de parámetros por defectoPractica por tu cuenta: Compilador de R online