La semplice lettura di un numero da tastiera
numero = int(input("Numero"))
crea spesso problemi se il numero deve appartenere a un certo intervallo di valori.
Soluzione 1
Il ciclo while ripete la lettura se il numero non appartiene all’intervallo [inf, sup]
inf = 1
sup = 10
numero = inf-1
while(numero < inf) or (numero > sup):
numero = int(input("Numero: "))
Soluzione 2
Come funzione
def leggiIntero(inf, sup):
n=inf-1
while(n < inf) or (n > sup):
n=int(input("Numero: "))
return n
numero=leggiIntero(1,10)
Soluzione 3
Con un messaggio specifico
def leggiIntero(inf, sup):
msg="Numero [" + str(inf) + "," + str(sup)+"] = "
n=inf-1
while(n < inf) or (n > sup):
n=int(input(msg))
return n
numero=leggiIntero(1,10)
Soluzione 4
La stringa digitata dall’utente potrebbe non essere un intero (float).
Il ciclo while e la struttura try … except … permettono di
- continuare (continue) con il tentativo di input in caso di errore nella conversione
- terminare (break) in caso di successo.
while(True):
try:
numero=int(input("Numero: "))
break
except:
continue