Menu
Coddy logo textTech

Formattazione con sprintf()

Fa parte della sezione Logica e flusso del percorso R di Coddy. Lezione 2 di 64.

sprintf() costruisce una stringa a partire da un modello. Ogni segnaposto % viene sostituito dall'argomento successivo: %s per il testo, %d per i numeri interi e %f per i numeri decimali.

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

Output:

[1] "Ada is 36 years old"

%d accetta solo numeri interi: sprintf("%d", 2.5) si interrompe con un errore.

Una precisione tra % e f imposta il numero di decimali, quindi %.2f arrotonda a due cifre decimali:

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

Output:

[1] "Total: 16.20"

Una larghezza completa il valore fino a quel numero di caratteri: %5d aggiunge spazi a sinistra, %-6s aggiunge spazi a destra e %03d aggiunge zeri. %% stampa un segno di percentuale.

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

Output:

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

sprintf() è vettorializzata: con argomenti vettoriali restituisce una stringa per ogni elemento. cat() con sep = "\n" stampa ogni stringa su una riga separata.

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

Output:

tea     4.00
cake   12.50
challenge icon

Sfida

Facile

Completa receipt_line(item, qty, price). Restituisci l'articolo, la quantità e il totale della riga (qty * price) nel formato tea x3 = 13.50: l'articolo, uno spazio, x seguito dalla quantità, poi = e il totale con esattamente due cifre decimali.

Il codice fornito legge l'articolo, la quantità e il prezzo (uno per riga) e stampa il valore restituito.

Provalo tu

receipt_line <- function(item, qty, price) {
  # Scrivi il tuo codice qui
  ""
}

# Codice di input/output fornito: lascialo così com'è
input <- suppressWarnings(readLines(file("stdin")))
cat(receipt_line(input[1], as.integer(input[2]), as.numeric(input[3])), sep = "\n")
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore R online