
Svolgeremo altri esercizi sul ciclo for in Python al fine di consolidare quanto studiato finora.
Esercizio sul ciclo for in Python
Progettate un algoritmo che scriva tutte le coppie di numeri naturali la cui somma è 20.
Dunque l’algoritmo dovrà stampare le coppie (20,0), (19,1), (18,2), (17,3), (16,4) ecc…
Per progettare questo algoritmo quindi basta far decrementare di uno il numero della prima coppia e incrementare di 1 il numero della seconda coppia.
Impostando n uguale a 20, utilizzo poi un ciclo for con l’indice i che parte da 0 fino ad n+1 e dunque si incrementa di 1. Dopo decrementiamo n di 1.
Ecco quindi una possibile soluzione:
n=20
for i in range(n+1):
print(n,i)
n-=1
Se non vogliamo ripetizioni basta mettere:
n=20
for i in range(n//2+1):
print(n,i)
n-=1
Possiamo anche generalizzare l’algoritmo chiedendo all’utente di inserire il valore di n.
n=int(input('Inserisci n: '))
for i in range(n//2+1):
print(n,i)
n-=1
Secondo esercizio sul ciclo for in Python
Date N coppie di numeri reali contare quelle che generano un prodotto negativo, positivo o uguale a zero senza eseguire l’operazione.
Il prodotto di due numeri è positivo quando i numeri sono entrambi positivi oppure entrambi negativi. Il prodotto tra due numeri è nullo quando uno solo dei due numeri è uguale a zero.
Negli altri casi è negativo.
Ecco dunque l’algoritmo completo:
N = int(input('Quante coppie? '))
p,n,z = 0,0,0
for i in range(N):
a = int(input('Inserire il primo numero: '))
b = int(input('Inserire il secondo numero: '))
if a > 0 and b > 0 or a < 0 and b < 0:
p+=1
elif a == 0 or b == 0:
z += 1
else:
n += 1
print('Prodotto positivo: ', p, '. Negativo: ', n, '. Nullo: ', z)
Terzo esercizio
Date n coppie di numeri reali contare quelle che generano una somma positiva, negativa o nulla senza eseguire l'operazione.
Realizziamo una prima soluzione facendo alcune considerazioni.
Quindi ad esempio osserviamo queste operazioni:
7+3 , 3+7, -5+6, 5-4 somma positiva
-7-3, -3-7, -5+4, 5-6 somma negativa
6-6 somma nulla
Da questi esempi deduciamo che la somma è positiva in questi casi:
i termini sono tutti e due positivi oppure
solo a è maggiore di zero e contemporaneamente è maggiore del valore assoluto di b oppure
solo b è maggiore di zero e contemporaneamente è maggiore del valore assoluto di a.
In definitiva allora vale la regola se a è maggiore del valore assoluto di b oppure b è maggiore del valore assoluto di a.
La somma invece è nulla quando a è l'opposto di b e questo include anche lo zero.
In tutti gli altri casi la somma è negativa.
Ecco dunque l'algoritmo completo:
N = int(input('Quante coppie? '))
p,n,z = 0,0,0
for i in range(N):
a = int(input('Inserire il primo numero: '))
b = int(input('Inserire il secondo numero: '))
if a > abs(b) or b > abs(a):
p += 1
elif a == -b:
z += 1
else:
n += 1
print('Somma positiva: ', p, '. Negativa: ', n, '. Nulla: ', z)
Per semplificare la risoluzione dell'algoritmo possiamo scambiare a e b se il valore della variabile a è inferiore a b.
Dopo controlliamo se a è maggiore del valore assoluto di b e se è vero incrementiamo la variabile p. Altrimenti controlliamo se a è l'opposto di b e incrementiamo il valore di z. Se nessuna di queste condizioni è vera allora incrementiamo la variabile n.
Ecco dunque una possibile soluzione all'algoritmo proposto:
N = int(input('Quante coppie? '))
p,n,z = 0,0,0
for i in range(N):
a = int(input('Inserire il primo numero: '))
b = int(input('Inserire il secondo numero: '))
if a < b:
a,b = b,a
if a > abs(b):
p += 1
elif a == -b:
z += 1
else:
n += 1
print('Somma positiva: ', p, '. Negativa: ', n, '. Nulla: ', z)
Abbiamo risolto alcuni semplici esercizi sul ciclo for in Python, nella prossima lezione approfondiremo ancora l'argomento.
Prova gli esempi nel compilatore sotto:
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
8 – Errori in Python
9 – Script Python
10 – Scambio di variabili
11 – Modulo math