Python: Gli operatori logici e le funzioni

Cerca nel sito

Altri risultati..

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors
Python- le variabili


Gli operatori logici

Le istruzioni condizionali ci permettono di eseguire del codice solo se una determinata condizione è soddisfatta, la condizione va definita sempre tramite le espressioni booleane.

Conoscendo l’espressioni booleane, possiamo definire un’istruzione condizionale inserendo un’espressione dentro un if, il codice indentato sotto l’if verrà eseguito solo se la condizione sopra è soddisfatta, cioè se il suo risultato è True.


n = input("Inserisci un numero: ")
n = int(n)

if(n%2==0):
    print("%d è un numero pari" % n)

Se il resto della divisione del numero per due è zero, allora si tratta di un numero pari e lo stampiamo.

Se invece è un numero dispari ?

Per gestire il caso in cui la condizione definita nell’if non è soddisfatta possiamo usare un else

 

n = input("Inserisci un numero: ")
n = int(n)

if(n%2==0):
    print("%d è un numero pari" % n)
else:
    print("%d è un numero dispari" % n)

Possiamo anche gestire più casi utilizzando degli elif.

n = int(input("Da quanti anni programmi ? "))

if(n<0):
    print("Hai inventato il viaggio nel tempo ?")
elif(n>=0 and n<=1):
    print("Sei un novellino !")
elif(n>1 and n<=3):
    print("Stai imparando !")
elif(n>3 and n<=5):
    print("Sarai già bravo !")
elif(n>5 and n<=10):
    print("Sarai molto bravo !")
else:
    print("Sarai un fenomeno !")

All’interno degli elif abbiamo inserito due condizioni unendole con un and, questo è un’operatore logico.

Operatori logici

in Python abbiamo i seguenti operatori logici:

  • and: ritorna True se entrambe le due condizioni sono True, altrimenti ritorna False
  • or: ritorna True se almeno una delle due condizioni è True, altrimenti ritorna False
  • not: esegue una negazione, se la condizione è True ritornerà False, se è False ritornerà True.
# entrambe le condizioni sono soddisfatte
print(1==1 and "casa"!="albergo")

# la prima condizione non è soddisfatta
print(1==2 and "casa"!="albergo")

# la prima condizione non è soddisfatta
print(1==2 or "casa"!="albergo")

# Nessuna condizione è soddisfatta
print(1==2 or "casa"=="albergo")

# Nessuna condizione è soddisfatta
print(not(1==2 or "casa"=="albergo"))

# Tutte le condizioni sono soddisfatte
print(not(1==1 or "casa"!="albergo"))

Riprendendo l’esempio della successione di Fibonacci, possiamo verificare che l’input sia effettivamente un numero in questo modo:

n = input("Quanti numeri di Fibonacci vuoi stampare? ")

if(not n.isdigit()):
    print("Numero non valido !")
else:
    n = int(n)
    fib_num = 0
    next_fib_num = 1

    for i in range(n):
        fib_num, next_fib_num = next_fib_num, next_fib_num+fib_num
        print("%d° numero di Fibonacci = %d" % (i+1, fib_num))

Output:
Quanti numeri di Fibonacci vuoi stampare? dieci
Numero non valido !

NOTA BENE

  • isdigit è un metodo della classe string (ne parleremo successivamente), questo ritorna True se la stringa contiene un numero, altrimenti ritorna False
  • nota la doppia indentazione nel ciclo for, necessaria per indicare che le istruzini fanno parte del ciclo for, che a sua volta fa parte del blocco else.
Ti potrebbe interessare anche:  Python: La libreria SpeechRecognition. Come convertire il parlato in testo

Le funzioni

Le funzioni ci permettono di riutilizzare blocchi di codice prendendo eventualmente dei dati in ingresso, chiamati argomenti o parametri e ritornando un’output.
Ad esempio, scriviamo una funzione per il calcolo dell’aria di un triangolo.

def compute_area(b,h):
    area = b*h/2
    return area

b = 5
h = 3
area = compute_area(b, h)

print("L'area del triangolo con base %.2f e altezza %.2f è %.2f" %(b,h,area))

La funzione viene definita con un def seguito dal nome della funzione e tra parentesi il nome dei suoi parametri, il valore che la funzione ritornerà sarà quello inserito dopo return.
Avremmo potuto scrivere la funzione in maniera più compatta inserendo il calcolo direttamente all’interno del return.

def compute_area(b,h):
    return b*h/2

Una funzione non deve per forza ritornare un valore, ad esempio può essere utilizzata per stampare un’ouput.

def print_shopping_list(shopping_list):
    
    print("La tua lista della spesa:")
    
    for i, entry in enumerate(shopping_list):
        print("%d) %s" % (i+1, entry))
    
   
shopping_list = ["tofu", "latte di soia", "riso basmati","yogurt greco"]
print_shopping_list(shopping_list)

I Parametri di una funzione possono contenere dei valori di default che verranno utilizzati nel caso in cui non specifichiamo tali parametri quando chiamiamo la funzione.

def print_shopping_list(shopping_list, owner="Giuseppe"):
  
  print("La lista della spesa di %s:" % owner)
  
  for i, entry in enumerate(shopping_list):
    print("%d) %s" % (i+1, entry))
    
   
shopping_list = ["tofu", "latte di soia", "riso basmati","yogurt greco"]
print_shopping_list(shopping_list)

# Stampiamo una linea vuota per separare le due liste
print("\n")

shopping_list = ["croccantini ", "latte", "scatolette di tonno","plutonio"]
print_shopping_list(shopping_list, owner="Elon") # Elon è il nome del mio gatto :)

NOTA BENE

Ti potrebbe interessare anche:  Esercizietti fanta-matematici con python

I parametri senza valore di default vanno sempre inseriti prima dei parametri con valore di default, altrimenti python genererà un’eccezione del tipo SintaxError, se vuoi sperimentarlo inserisci il parametro owner prima del parametro shopping_list nella definizione della funzione qui sopra.

Python: I cicli: il ciclo while

 

(345)