Convalida dell'input
Fa parte della sezione Logica e flusso del percorso GDScript di Coddy. Lezione 67 di 78.
L’input arriva come testo e int() converte qualsiasi testo senza lamentarsi. Quando il testo non è un numero intero, ottieni un valore errato invece di un errore:
print(int("abc")) # 0
print(int("12abc")) # 12
print(int("3.14")) # 3Quindi controlla il testo prima di convertirlo. is_valid_int() restituisce true quando l'intero testo è un numero intero:
print("42".is_valid_int()) # true
print("-15".is_valid_int()) # true
print("3.14".is_valid_int()) # false
print("abc".is_valid_int()) # false
print("".is_valid_int()) # falseis_valid_float() fa lo stesso per i numeri decimali. Accetta anche i numeri interi, perché 5 è un float valido:
print("3.14".is_valid_float()) # true
print("5".is_valid_float()) # true
print("five".is_valid_float()) # falseGli spazi contano come caratteri: " 99 ".is_valid_int() è false. Chiama prima strip_edges() quando l'input può avere spazi intorno.
Un numero valido può comunque essere un valore errato. Dopo la conversione, verifica che rientri nell'intervallo consentito dal tuo programma:
var text := OS.read_string_from_stdin()
if not text.is_valid_int():
print("Please enter a whole number")
else:
var age := int(text)
if age < 0 or age > 120:
print("Age must be between 0 and 120")
else:
print("Age: ", age)Sfida
FacileIl programma legge una riga di input. Controllala prima di convertirla:
- Se è un numero intero, stampa
You entered:seguito dal numero - Altrimenti, stampa
Invalid input! Please enter a valid number.
Per l'input 42, l'output è:
You entered: 42Per gli input abc e 3.14, l'output è:
Invalid input! Please enter a valid number.Stampa il numero convertito, non il testo: per l'input 007, l'output è You entered: 7.
Provalo tu
extends Node
func _ready():
var user_input := OS.read_string_from_stdin()
# Controlla l'input, poi stampa il numero o il messaggio di errore
pass
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Stringhe in dettaglio
Metodi delle stringheRicerca nelle stringheSostituzione e trimDividere e unireRipasso - verifica del nome utente4Dizionari - Parte 2
Dizionari annidatiArray di dizionariUnire dizionariCopiare dizionariRiepilogo - Contatore di frequenza7Enumerazioni
Che cos'è un'enumerazione?Definire un'enumerazioneValori dell'enumerazioneEnumerazioni in MatchRiepilogo - Semaforo10Funzioni avanzate
Restituire più valoriFunzioni lambda - Parte 1Funzioni lambda - Parte 2Ripasso - Ordinamento con lambdaFunzioni ricorsive - Parte 1Funzioni ricorsive - Parte 2Ripasso - Somma di un array annidato13Sistema di gestione dell'inventario
Panoramica del progettoAggiungere un articolo2Decisioni avanzate
Match con variabiliGuardie di matchPattern per arrayPattern per dizionariVerifiche di appartenenzaRiepilogo - Parser di comandi5Applicazione Rubrica
Visualizzare il menuAggiungere un contatto8Gestione dei registri degli studenti
Panoramica del progettoAggiungi studente11Funzioni di ordine superiore
Il metodo mapIl metodo filterIl metodo reduceany e allRipasso - Validatore di emailRipasso - Elaboratore di numeri3Array multidimensionali
Fondamenti degli array 2DAccedere agli elementi di un array 2DCicli annidati con array 2DRipasso - Array 2DArray frastagliatiSchemi comuni con gli array 2DRipasso - Tabellone di gioco6Insiemi con i dizionari
Che cos'è un insieme?Il dizionario come insiemeAggiungere e rimuovereUnione e intersezioneDifferenza tra insiemiRiepilogo - Rimuovere i duplicati9Aggregazione avanzata dei dati
Somma dei valoriTrovare minimo e massimoOrdinamento personalizzatoRiepilogo - Ordinatore di dizionari12Gestione di base degli errori
Che cos'è la gestione degli errori?Convalida dell'inputClausole di guardiaRestituire codici di erroreRiepilogo - Divisione sicuraEsercitati da solo: Compilatore GDScript online