Python: I cicli: il ciclo for

Cerca nel sito

Altri risultati..

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors

Cerca nelle Categorie

Python- le variabili

Il ciclo for

I cicli ci permettono di eseguire una serie di istruzioni in maniera ciclica.
Un’esempio classico di ciclo è il ciclo for, utilizzato da molti linguaggi di programmazione, Python incluso.
Utilizziamolo per stampare una serie di numeri:

n = input(“Fino a che numero vuoi stampare ? “)
n = int(n)
for i in range(0,n):
      print(i)

Output:

Fino a che numero vuoi stampare ? 10
0
1
2
3
4
5
6
7
8
9

La funzione range

La funzione range ritorna una sequenza di numeri, in questo caso che va da 0 a n, dove n è la variabile definita da noi con la funzione input e ad ogni iterazione del ciclo la variabile i verrà incrementata di uno e otterrà il valore dell’i-esimo numero della sequenza, fino al valore n.
Passando un’unico valore come input della funzione range, questa farà partire la sequenza dal valore di default zero.

ATTENZIONE!!

Abbiamo lasciato 4 spazi prima dell’istruzione all’interno del ciclo for, questi spazi sono conosciuti come indentazione e permettono all’interprete Python di comprendere il contesto delle istruzioni (ad esempio nel nostro codice permettono di comprendere quali istruzioni devono essere eseguite all’interno del ciclo for).

Diversi linguaggi di programmazione, come C/C++, Java e Javascript, utilizzano le parentesi graffe per identificare il contesto delle istruzioni, Python piuttosto forza ad usare l’indentazione per migliorare la leggibilità del codice (e lo fa benissimo !). I 4 caratteri per l’indentazione sono uno standard proposto nel PEP 8, in realtà è anche possibile utilizzare un numero differente di spazi (purché sia consistente in tutto il codice) oppure lo shift. Un blocco di codice indentato viene sempre introdotto da (:) alla fine della riga precedente.
Se non indentiamo l’istruzione sotto il ciclo for otterremo un’eccezione di tipo:

Ti potrebbe interessare anche:  Python: La Standard Library

IndentationError.

 

for i in range(0,10):
print(i)

Output:

File “<ipython-input-44-f5a262fe7a2d>”, line 2
print(i)
^
IndentationError: expected an indented block

 

Implementiamo un ciclo for per il calcolo della successione di Fibonacci fino ad un indice definito da noi. Se non conosci la successione di Fibonacci, ogni elemento della sequenza è la somma dei due valori precedenti, per approfondire dai uno sguardo qui sotto:

Fibonacci: un pisano e due coniglietti

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

#Possiamo sintetizzare le due istruzioni sopra in un unico comando
n = int(input("Quanti numeri di Fibonacci vuoi stampare? "))

fib_num = 0
next_fib_num = 1

for i in range(n):
    #Salviamo il valore successivo in una variabile temporanea
    tmp = next_fib_num
    #Otteniamo il nuovo valore successivo sommando quello corrente
    next_fib_num+=fib_num
    #Assegnamo il valore successivo della successione a quello corrente
    fib_num = tmp
  
    print("%d° numero di Fibonacci = %d" % (i+1, fib_num))

Output:

Quanti numeri di Fibonacci vuoi stampare? 10
1° numero di Fibonacci = 1
2° numero di Fibonacci = 1
3° numero di Fibonacci = 2
4° numero di Fibonacci = 3
5° numero di Fibonacci = 5
6° numero di Fibonacci = 8
7° numero di Fibonacci = 13
8° numero di Fibonacci = 21
9° numero di Fibonacci = 34
10° numero di Fibonacci = 55

swapping

Come vedi ci siamo ritrovati a dover immagazzinare il valore del numero successivo in una variabile temporanea, questa è necessaria ogni volta che c’è da invertire il valore di due variabili (questa procedura è chiamata swapping).

a = "cane"
b = "gatto"

print("a=%s b=%s" % (a,b))

tmp = a
a = b
b = tmp

print("a=%s b=%s" % (a,b))

Output:

a=cane b=gatto
a=gatto b=cane

Python ci mette a disposizione una tecnica per eseguire lo swapping senza dover utilizzare una terza variabile, ma semplicemente eseguendo l’assegnazione in simultanea separando i valori con una virgola.

a = “cane”
b = “gatto”

print(“a=%s b=%s” % (a,b))

a,b = b,a

print(“a=%s b=%s” % (a,b))

Output:

a=cane b=gatto
a=gatto b=cane

Alla luce di ciò, modifichiamo il nostro algoritmo per il calcolo della successione di Fibonacci:

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

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? 10
1° numero di Fibonacci = 1
2° numero di Fibonacci = 1
3° numero di Fibonacci = 2
4° numero di Fibonacci = 3
5° numero di Fibonacci = 5
6° numero di Fibonacci = 8
7° numero di Fibonacci = 13
8° numero di Fibonacci = 21
9° numero di Fibonacci = 34
10° numero di Fibonacci = 55

Decisamente meglio !

Ti potrebbe interessare anche:  Python: la libreria Sympy

Possiamo utilizzare un ciclo for per iterare sugli elementi di una lista, potresti pensare che il modo per farlo possa essere questo:

shopping_list = ["tofu", "latte di soia", "riso basmati","yogurt greco"]

print("La mia lista della spesa:")

for i in range(len(shopping_list)):
    print("%d) %s" % (i+1,shopping_list[i]))

Output:

La mia lista della spesa:
1) tofu
2) latte di soia
3) riso basmati
4) yogurt greco

e funziona, ma in realtà esiste un metodo migliore per stampare la nostra lista della spesa, possiamo iterare direttamente sugli elementi della lista.

shopping_list = ["tofu", "latte di soia", "riso basmati","yogurt greco"]

print("La mia lista della spesa:")

for entry in shopping_list:
    print("-"+entry)

Output:

La mia lista della spesa:
-tofu
-latte di soia
-riso basmati
-yogurt greco

NOTA BENE

entry è sempre una variabile il cui nome viene definito da noi, che conterrà ad ogni iterazione il successivo elemento della lista.

Funzione enumerate

Come vedi adesso abbiamo stampato gli elementi della nostra lista della spesa in maniera decisamente più intuitiva, ma non abbiamo più l’indice i. Qualora ci servisse sia l’elemento che l’indice, possiamo utilizzare la funzione enumerate, che ci permette di iterare su entrambi.

shopping_list = ["tofu", "latte di soia", "riso basmati","yogurt greco"]

print("La mia lista della spesa:")

for i,entry in enumerate(shopping_list):
    print("%d) %s" % (i+1, entry))

Output:

La mia lista della spesa:
1) tofu
2) latte di soia
3) riso basmati
4) yogurt greco

 

Python: Gli input e gli output

Python: le variabili

Python: le liste e le tuple

Python: I Set ed i Dizionari

 

Ti potrebbe interessare anche:  Padroneggiare Massimo e Minimo in Python: Esercizi Pratici a Difficoltà Crescente (1)

(594)

PubblicitàPubblicità