Obtendo a Entrada do Usuário
Parte da seção Fundamentos do Journey de R da Coddy. Lição 34 de 78.
Desafio
FácilNa lição anterior, você criou uma mensagem de boas-vindas para o Bill Split Calculator. Agora, adicione a funcionalidade para coletar a entrada do usuário para o cálculo da conta.
Depois da mensagem de boas-vindas existente, leia três entradas do usuário:
- O valor total da conta
- A porcentagem da gorjeta (como um número inteiro, por exemplo,
15para 15%) - O número de pessoas que dividirão a conta
Em scripts R executados de forma não interativa (como nesta plataforma), a entrada é lida do fluxo de entrada padrão. Para fazer isso, primeiro abra uma conexão com stdin usando file(), depois leia cada linha com readLines() e feche a conexão ao terminar:
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)Veja o que cada parte faz:
file("stdin", "r"): abre o fluxo de entrada padrão para leitura e o armazena emconreadLines(con, n = 1): lê exatamente uma linha dessa conexão. Observação:readLines()é diferente dereadline():readLines()funciona com conexões de arquivo (incluindostdin) e pode ler várias linhas de uma vez usandon =, enquantoreadline()funciona apenas interativamente no console do RsuppressWarnings(...): silencia avisos inofensivos que aparecem ao ler destdindessa forma. Quando o R lê destdinem um script, às vezes produz um aviso como "linha final incompleta", mesmo quando tudo funciona corretamente. Envolver a chamada emsuppressWarnings()oculta essas mensagens para que elas não poluam sua saída. Isso não afeta os valores que estão sendo lidosas.numeric(...): converte a entrada de texto em um númeroclose(con): fecha a conexão depois que todas as entradas são lidas
Armazene os três valores em variáveis chamadas bill, tip_percent e people.
Depois de ler as entradas, exiba uma mensagem de confirmação mostrando o que foi inserido no seguinte formato:
Bill: $[bill]
Tip: [tip_percent]%
People: [people]Use cat() para toda a saída e inclua caracteres de nova linha \n onde necessário. Use sep = "" em cada chamada de cat() para evitar espaços indesejados.
Por padrão, cat() insere um espaço entre cada item que imprime. Por exemplo:
cat("Bill: $", 120, "\n") # prints: Bill: $ 120 Observe os espaços indesejados entre $ e 120 e antes da nova linha. Adicionar sep = "" informa ao cat() para usar uma string vazia como separador, portanto nada é inserido entre os itens:
cat("Bill: $", 120, "\n", sep = "") # prints: Bill: $120Aplique esse padrão às três linhas de confirmação:
cat("Bill: $", bill, "\n", sep = "")
cat("Tip: ", tip_percent, "%\n", sep = "")
cat("People: ", people, "\n", sep = "")Por exemplo, se as entradas forem 120, 18 e 4, a saída completa deverá ser:
Welcome to the Bill Split Calculator!
Let's split your bill fairly.
Bill: $120
Tip: 18%
People: 4Experimente você mesmo
# 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 as lições de Fundamentos
4Operadores - Parte 2
Operadores lógicos (AND, OR)Operadores lógicos - Parte 2 (NOT)Revisão - Lógica simplesLógica vetorizada - Parte 1Lógica vetorizada - Parte 27Calculadora de Divisão da Conta
Mensagem de Boas-vindasObtendo a Entrada do Usuário10FizzBuzz com uma Reviravolta
Visão Geral do JogoA Função FizzBuzz2Variáveis e Tipos de Dados
Tipo de Dado NuméricoTipo de Dado InteiroTipo de Dado CaractereTipo de Dado LógicoVerificando Tipos de DadosConvenções de NomenclaturaValores Ausentes: NARecapitulação - Criação de Variáveis8Laços
Laço ForLaço WhileBreakNext (Continue)Revisão - FatorialGeração de Sequências (seq, :)Laços AninhadosRevisão - Entrada Dinâmica3Operadores - Parte 1
Operadores aritméticosDivisão inteira e móduloOperadores de atribuiçãoRevisão - Matemática simplesOperadores de comparação6Entrada e saída básicas
Imprimir saídacat para saídaSaída com variáveisLendo entrada com readline()Noções básicas de conversão de tiposRecapitulação - Calculadora de idadeRecapitulação - Verdadeiro ou falso9Funções
Declarando uma FunçãoArgumentos de FunçãoValores de RetornoRecapitulação - Função SigmaRecapitulação - Função de ValidaçãoValores de Parâmetros PadrãoPratique por conta própria: Compilador de R online