Ciclo for in Python

Ciclo for in python

In questa lezione, propongo altri esercizi sul ciclo for in Python.

Primo esercizio ciclo for in Python

Progettate un algoritmo che scriva tutte le coppie di numeri che danno per prodotto 60.

La soluzione consiste nell’utilizzare un ciclo for per trovare i divisori di 60, quindi per ogni divisore troviamo anche il quoziente.

Ricordiamo infatti come si chiamano i termini della divisone facendo un esempio:

60 : 3 = 20

Quindi 60 si chiama dividendo, 3 si chiama divisore e 20 si chiama quoziente. Questo vuol dire che se moltiplico il quoziente ottenuto per il divisore ottengo il dividendo. Infatti in questo caso specifico si ha: 20 *3=60.

Allora inizializziamo n a 60.

Dopo impostiamo il range con l’indice i deve partire da 1 in quanto altrimenti si avrebbe una divisione per zero e ciò non è possibile e si ferma ad n+1 perché dobbiamo dividere per 60 se vogliamo trovare tutte le coppie.

Poi, facendo questa operazione n%i==0 si controlla se il resto della divisone è zero. Se è vero significa che i è il divisore, dunque troviamo il quoziente.

Infine stampiamo le coppie.

Ecco dunque l’algoritmo che utilizza il ciclo for in python per trovare le coppie che danno come prodotto 60:

n=60

for i in range(1,n+1):
    if n%i==0:
        q=n//i
        print('Coppia ',i,' e ',q)

Svolgiamo alcuni passi dell’algoritmo per spiegarlo meglio.

n=60

Primo passo:

for i in range(1,n+1): #i=1

if n%i==0:   #60%1==0 è vera

q=n//i  #troviamo il quoziente cioè q=60//1=60
print(‘Coppia ‘,i,’ e ‘,q)  #Stampiamo la prima coppia cioè i=1 e q=60

Secondo passo:

for i in range(1,n+1): #i=2

if n%i==0:   #60%2==0 è vera

q=n//i  #troviamo il quoziente cioè q=60//2=30
print(‘Coppia ‘,i,’ e ‘,q)  #Stampiamo la prima coppia cioè i=2 e q=30

Terzo passo:

for i in range(1,n+1): #i=3

if n%i==0:   #60%3==0 è vera

q=n//i  #troviamo il quoziente cioè q=60//3=20
print(‘Coppia ‘,i,’ e ‘,q)  #Stampiamo la prima coppia cioè i=3 e q=20

e così via fino all’ultimo passaggio dove divideremo il numero per se stesso.

Secondo esercizio

Stampa i primi N numeri dispari successivi al numero A.

Prendiamo in input il numero da cui partire, cioè A e la quantità di numeri dispari da visualizzare successivi ad A.

ES: Inseriamo N =5 ed A=6.

Quindi i 5 successivi numeri dispari di A che dobbiamo visualizzare sono: 7, 9, 11, 13, 15.

Allora l’indice i del for deve partire da 7 e terminare a 15. Da 7 a 15 ci sono 2* N -1 (9) numeri di cui 5 sono dispari e 4 pari.

Altro esempio: Inseriamo N =3 ed A=7.

Quindi i 3 successivi numeri dispari di A che dobbiamo visualizzare sono: 9, 11, 13.

Allora l’indice i del for deve partire da 9 e terminare a 13. Da 9 a 13 ci sono 2* N -1 (5) numeri di cui 3 sono dispari e 2 pari.

Osservando gli esempi sopra, onde evitare di creare due cicli for, eseguiamo un if e se A è pari lo facciamo diventare dispari, se A è dispari lo incrementiamo di 2.

Poi realizziamo un ciclo for che inizializza l’indice i ad A, in quanto rappresenta il numero di partenza ed incrementa il valore di A di 2 fino ad arrivare alla somma di A più il doppio dei numeri richiesti .

Dunque basta stampare semplicemente l’indice per ottenere quello che l’algoritmo richiede.

Ecco il codice completo che utilizza il ciclo for in python:

N=int(input('Quanti numeri visualizzare? '))
A=int(input('Inserisci il valore da cui partire'))

if A%2==0:
    A+=1
else:
    A+=2

for i in range(A,A+N*2,2):
      print (i)

Questi sono solo alcuni esempi sul ciclo for in Python, nelle prossime lezioni approfondiremo l’argomento.

Alcuni link utili

Indice tutorial sul linguaggio Python

1 – Introduzione al linguaggio Python

2 – Le variabili

3 – Operatori aritmetici e di assegnazione

4 – Stringhe

5 – Casting

6 – Input e print

7 – Primi esercizi in Python

8 – Errori in Python

9 – Script Python

10 – Scambio di variabili

11 – Modulo math

12 – Operatori di confronto e booleani

13 – If else

14 – If elif else

15 – If annidati

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *