Menu
CoddyTech

Leggere l'input con readline()

Fa parte della sezione Fondamenti del percorso R di Coddy. Lezione 29 di 78.

Finora hai imparato a visualizzare l'output. Ora è il momento di rendere interattivi i tuoi programmi leggendo l'input dell'utente. La funzione readline() ti permette di acquisire ciò che l'utente digita.

name <- readline()
cat("Hello,", name, "\n")

Quando questo codice viene eseguito in una sessione R interattiva (la console R o RStudio), R aspetta che l’utente digiti qualcosa e prema Invio. Qualunque cosa digiti viene memorizzata nella variabile name. Se l’utente digita "Alice", il risultato sarebbe: Hello, Alice

Su questa piattaforma il tuo codice viene eseguito come script con Rscript, quindi readline() non aspetta: restituisce subito una stringa vuota "". Ecco perché il codice iniziale della sfida di questa lezione legge l’input con readLines().

Una cosa importante da sapere: readline() restituisce sempre una stringa di caratteri, anche se l’utente digita un numero. Se qualcuno inserisce "25", viene memorizzato come testo "25", non come numero 25. Imparerai a convertire i tipi nella prossima lezione.

Puoi leggere più input usando readline() più volte:

first <- readline()
second <- readline()
cat("First:", first, "\n")
cat("Second:", second, "\n")

In una sessione interattiva, ogni chiamata a readline() attende una riga di input separata da parte dell'utente.

Quando combini testo e variabili usando cat(), tra ogni elemento separato da una virgola viene inserito uno spazio. A volte è necessario unire il testo senza spazi, ad esempio per attaccare direttamente la punteggiatura a una parola. In questo caso è utile paste0(). Concatena le stringhe senza alcun separatore tra di esse:

city <- readline()
cat("Welcome to", paste0(city, "!"), "\n")

Qui, paste0(city, "!") unisce il valore di city e "!" senza spazi, quindi se l’utente digita "Paris", il risultato è: Welcome to Paris!

challenge icon

Sfida

Facile

Leggi due righe di input e visualizza un messaggio di saluto personalizzato.

Riceverai due input:

  1. Un nome
  2. Il nome di una città

Il codice iniziale legge già entrambi gli input in name e city con readLines(), perché readline() funziona solo in una sessione interattiva e in questo caso non riceve nulla. Visualizza un messaggio nel seguente formato:

Welcome, [name] from [city]!

Usa cat() per produrre l'output. Assicurati di includere il punto esclamativo alla fine e un carattere di nuova riga \n.

Per esempio, se gli input sono Emma e Paris, l'output dovrebbe essere:

Welcome, Emma from Paris!

Provalo tu

# Leggi l'input
con <- file("stdin", "r")
name <- suppressWarnings(readLines(con, n = 1))
city <- suppressWarnings(readLines(con, n = 1))

# TODO: Scrivi il tuo codice qui sotto per visualizzare il messaggio di saluto
# Usa cat() per produrre l'output: Welcome, [name] from [city]!
# Non dimenticare il carattere di nuova riga \n alla fine
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 Fondamenti

Esercitati da solo: Compilatore R online