
Realizziamo un programma che visualizzi in output un rettangolo di asterischi, prendendo in input la base e l’altezza.
Per realizzare questo algoritmo chiediamo innanzitutto all’utente di inserire la base e l’altezza.
Dopo impostiamo il range del ciclo for esterno con il valore dell’altezza (h) e il range del ciclo for interno con il valore della base.
Quindi all’interno del ciclo interno con la funzione print stampiamo gli asterischi ad ogni iterazione.
Poi all’uscita di ogni ciclo interno andiamo a capo usando semplicemente print().
Ecco dunque il codice completo del rettangolo di asterischi:
b=int(input(‘Base: ‘))
h=int(input(‘Altezza: ‘))
for i in range(h):
for j in range(b):
print(‘*’, end=‘ ‘)
print()
Oppure posso utilizzare anche un solo ciclo for, sempre dopo aver preso in input base e altezza:
for i in range(h):
print(‘* ‘*b)
Cioè moltiplico il carattere asterisco (*) per la base!
Rettangolo di asterischi – cornice
Proviamo adesso a rappresentare un rettangolo di asterischi solo con la cornice esterna.
Anche qui chiediamo di inserire la base e l’altezza all’utente.
Quindi consideriamo che solo la prima e l’ultima riga avranno tutti gli asterischi, cioè se i==0 oppure i==h-1.
Per quanto riguarda le altre righe avranno solo l’asterisco nella prima e nell’ultima colonna, cioè se j==0 oppure j==b-1.
Ecco dunque il codice completo del rettangolo di asterischi realizzato con la sola cornice esterna:
b=int(input(‘Base: ‘))
h=int(input(‘Altezza: ‘))
for i in range(h):
for j in range(b):
if i==0 or i==h-1:
print(‘* ‘, end=”)
#asterisco e spazio vuoto all’interno degli apici
elif j==0 or j==b-1:
print(‘* ‘, end=”)
#asterisco e spazio vuoto all’interno degli apici
else:
print(‘ ‘, end=”) #due spazi vuoti all’interno degli apici
print()
Allo stesso modo:
b = int(input('Base: '))
h = int(input('Altezza: '))
for i in range(h):
for j in range(b):
if i == 0 or i == h-1 or j == 0 or j == b-1:
print('* ', end=' ')
else:
print(' ', end=' ') #due spazi vuoti all’interno degli apici
print()
Quadrato e diagonali
Realizziamo adesso un programma che generi un quadrato di asterischi con le sue diagonali.
Innanzitutto prendiamo in input il lato del quadrato.
Dopo, come nell’esercizio precedente pensiamo di realizzare la cornice inserendo due cicli for annidati.
Calcoliamo adesso le due diagonali.
Partiamo prima dalla diagonale principale.
Per capire come ricavarla facciamo un esempio.
Consideriamo ad esempio un quadrato di lato 6. Allora la diagonale principale sarà data dagli elementi (0,0), (1,1), (2, 2), (3,3), (4,4), (5,5).
Quindi la diagonale principale sarà caratterizzata dal fatto che i e j sono uguali.
Adesso calcoliamo la diagonale secondaria.
La diagonale secondaria è data dagli elementi: (0, 5), (1, 4), (2,3), (3, 2), (4, 1), (5,0).
Facciamo attenzione all’elemento j, noteremo che osserva questa regola:
j=n-i-1
Infatti, nel primo caso i=0 e j=6-0-1=5 quindi (0,5)
Secondo caso i=1 e j=6-1-1=4 quindi (1,4)
Terzo caso i=2 e j=6-1-2=3 quindi (2,3)
Quarto caso i=3 e j=6-1-3=2 quindi (3,2)
Quinto caso i=4 e j=6-1-4=1 quindi (4,1)
Infine nel sesto caso i=5 e j=6-1-5=0 quindi (5,0)
Approfondiremo questo discorso delle diagonali quando parleremo delle matrici.
A questo punto diventa semplice costruire il nostro algoritmo utilizzando due cicli for annidati.
Ecco dunque il codice completo:
lato=int(input(‘lato: ‘))
for i in range(lato):
for j in range(lato):
if i==0 or i==lato-1:
print(‘* ‘, end=”)
elif j==0 or j==lato-1:
print(‘* ‘, end=”)
elif j==i or j==lato-1-i: #elementi diagonali
print(‘* ‘, end=”)
else:
print(‘ ‘, end=”)
print()
Possiamo anche scrivere:
lato = int(input('lato: '))
for i in range(lato):
for j in range(lato):
if i == 0 or i == lato-1 or j == 0 or j == lato-1 or j == i or j == lato-1-i:
print('*', end='')
else:
print(' ', end='')
print()
In questa lezione abbiamo disegnato un rettangolo di asterischi e un quadrato con la sua diagonale, questi sono solo alcuni esempi d’uso dei cicli for in Python, presto ne farò degli altri.
Proviamo a scrivere il codice nell’editor 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