Acquisire input dell'utente
Fa parte della sezione Fondamenti del percorso R di Coddy. Lezione 34 di 78.
Sfida
FacileNella lezione precedente, hai creato un messaggio di benvenuto per il Bill Split Calculator. Ora aggiungi la funzionalità per raccogliere i dati inseriti dall’utente per il calcolo del conto.
Dopo il messaggio di benvenuto esistente, leggi tre valori inseriti dall’utente:
- L’importo totale del conto
- La percentuale della mancia (come numero intero, ad es.
15per il 15%) - Il numero di persone che dividono il conto
Negli script R eseguiti in modalità non interattiva (come su questa piattaforma), l’input viene letto dal flusso di input standard. Per farlo, apri prima una connessione a stdin usando file(), poi leggi ogni riga con readLines() e, al termine, chiudi la connessione:
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)Ecco cosa fa ogni parte:
file("stdin", "r"): apre il flusso di input standard per la lettura e lo memorizza inconreadLines(con, n = 1): legge esattamente una riga da quella connessione. Nota:readLines()è diversa dareadline():readLines()funziona con le connessioni ai file (inclusostdin) e può leggere più righe alla volta usandon =, mentrereadline()funziona solo in modo interattivo nella console RsuppressWarnings(...): silenzia gli avvisi innocui che compaiono quando si legge dastdinin questo modo. Quando R legge dastdinin uno script, a volte genera un avviso come "incomplete final line" anche quando tutto funziona correttamente. Racchiudere la chiamata insuppressWarnings()nasconde questi messaggi, così non ingombrano l’output. Non influisce sui valori lettias.numeric(...): converte il testo inserito in un numeroclose(con): chiude la connessione dopo aver letto tutti i valori
Memorizza i tre valori in variabili chiamate bill, tip_percent e people.
Dopo aver letto i valori inseriti, mostra un messaggio di conferma che riporti quanto inserito nel seguente formato:
Bill: $[bill]
Tip: [tip_percent]%
People: [people]Usa cat() per tutto l’output e includi i caratteri di nuova riga \n dove necessario. Usa sep = "" in ogni chiamata a cat() per evitare spazi indesiderati.
Per impostazione predefinita, cat() inserisce uno spazio tra ogni elemento che stampa. Per esempio:
cat("Bill: $", 120, "\n") # prints: Bill: $ 120 Nota gli spazi indesiderati tra $ e 120, e prima della nuova riga. Aggiungendo sep = "" si indica a cat() di usare invece una stringa vuota come separatore, così non viene inserito nulla tra gli elementi:
cat("Bill: $", 120, "\n", sep = "") # prints: Bill: $120Applica questo schema a tutte e tre le righe di conferma:
cat("Bill: $", bill, "\n", sep = "")
cat("Tip: ", tip_percent, "%\n", sep = "")
cat("People: ", people, "\n", sep = "")Per esempio, se i valori inseriti sono 120, 18 e 4, l’output completo dovrebbe essere:
Welcome to the Bill Split Calculator!
Let's split your bill fairly.
Bill: $120
Tip: 18%
People: 4Provalo tu
# 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")Tutte le lezioni di Fondamenti
4Operatori Parte 2
Operatori logici (AND, OR)Operatori logici Parte 2 (NOT)Ripasso - Logica sempliceLogica vettorializzata Parte 1Logica vettorializzata Parte 27Calcolatore per dividere il conto
Messaggio di benvenutoAcquisire input dell'utente10FizzBuzz con una variante
Panoramica del giocoLa funzione FizzBuzz13Vettori: argomenti avanzati
Slicing e indicizzazione dei vettoriIndicizzazione logicaAritmetica dei vettori e ricicloL’operatore %in%2Variabili e tipi di dati
Tipo di dato numericoTipo di dato interoTipo di dato carattereTipo di dato logicoControllo dei tipi di datoConvenzioni di denominazioneValori mancanti: NARiepilogo - Creazione di variabili8Cicli
Ciclo forCiclo whilebreaknext (continue)Riepilogo - FattorialeGenerazione di sequenze (seq, :)Cicli annidatiRiepilogo - Input dinamico3Operatori Parte 1
Operatori aritmeticiDivisione intera e moduloOperatori di assegnazioneRiepilogo - Matematica sempliceOperatori di confronto6I/O di base
Stampare l'outputcat per l'outputOutput con variabiliLeggere l'input con readline()Nozioni di base sulla conversione dei tipiRiepilogo - Calcolatore dell'etàRiepilogo - Vero o falso9Funzioni
Dichiarare una funzioneArgomenti della funzioneValori di ritornoRiepilogo - Funzione SigmaRiepilogo - Funzione di validazioneValori predefiniti dei parametriEsercitati da solo: Compilatore R online