Leggere un numero

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 tryexcept … permettono di

  1. continuare (continue) con il tentativo di input in caso di errore nella conversione
  2. terminare (break) in caso di successo.
while(True): 
    try: 
        numero=int(input("Numero: ")) 
        break 
    except: 
        continue