Menu
Coddy logo textTech

Formatação com sprintf()

Parte da seção Lógica e Fluxo do Journey de R da Coddy. Lição 2 de 64.

sprintf() cria uma string a partir de um modelo. Cada marcador % é substituído pelo próximo argumento: %s para texto, %d para números inteiros e %f para números decimais.

name <- "Ada"
age <- 36
print(sprintf("%s is %d years old", name, age))

Saída:

[1] "Ada is 36 years old"

%d aceita apenas números inteiros: sprintf("%d", 2.5) é interrompido com um erro.

Uma precisão entre % e f define o número de casas decimais, então %.2f arredonda para duas casas:

total <- 3 * 4.5 * 1.2
print(sprintf("Total: %.2f", total))

Saída:

[1] "Total: 16.20"

Uma largura preenche o valor até atingir essa quantidade de caracteres: %5d preenche à esquerda, %-6s preenche à direita e %03d preenche com zeros. %% imprime um sinal de porcentagem.

print(sprintf("[%5d]", 42))
print(sprintf("[%-6s]", "tea"))
print(sprintf("%03d", 7))
print(sprintf("%d%%", 85))

Saída:

[1] "[   42]"
[1] "[tea   ]"
[1] "007"
[1] "85%"

sprintf() é vetorizada: com argumentos vetoriais, ela retorna uma string por elemento. cat() com sep = "\n" imprime cada string em sua própria linha.

items <- c("tea", "cake")
prices <- c(4, 12.5)
lines <- sprintf("%-5s %6.2f", items, prices)
cat(lines, sep = "\n")

Saída:

tea     4.00
cake   12.50
challenge icon

Desafio

Fácil

Complete receipt_line(item, qty, price). Retorne o item, a quantidade e o total da linha (qty * price) no formato tea x3 = 13.50: o item, um espaço, x seguido pela quantidade, depois = e o total com exatamente duas casas decimais.

O código fornecido lê o item, a quantidade e o preço (um por linha) e imprime o valor retornado.

Experimente você mesmo

receipt_line <- function(item, qty, price) {
  # Escreva seu código aqui
  ""
}

# Código de entrada/saída fornecido: mantenha-o como está
input <- suppressWarnings(readLines(file("stdin")))
cat(receipt_line(input[1], as.integer(input[2]), as.numeric(input[3])), sep = "\n")
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica e Fluxo

Pratique por conta própria: Compilador de R online