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='')
        elif j == 0 or j == b - 1:
            print('* ', end='')
        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).

Migliora le tue capacità di programmazione Python seguendo il nostro corso in diretta!

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:

Conclusioni

In questa lezione abbiamo esplorato diversi esempi di utilizzo del ciclo for in Python per creare figure geometriche utilizzando asterischi. Abbiamo iniziato con la creazione di un rettangolo di asterischi, prendendo in input la base e l’altezza, e abbiamo visto due approcci per realizzarlo: uno utilizzando due cicli for annidati e uno utilizzando un singolo ciclo for. Successivamente, abbiamo modificato il codice per creare un rettangolo di asterischi con una cornice esterna. Infine, abbiamo implementato un algoritmo per creare un quadrato con le sue diagonali, illustrando il calcolo delle diagonali principali e secondarie.

Questi esempi dimostrano l’ampiezza delle applicazioni del ciclo for in Python e la sua versatilità nel risolvere una vasta gamma di problemi. L’utilizzo di cicli for annidati ci consente di esplorare modelli più complessi e di manipolare i dati in modi creativi. Continuando a praticare e sperimentare con il ciclo for, saremo in grado di acquisire una maggiore padronanza della programmazione Python e affrontare sfide più avanzate.

Ricordiamoci sempre di mantenere il codice pulito e leggibile, utilizzando la formattazione adeguata e i commenti appropriati per facilitare la comprensione del nostro lavoro da parte di noi stessi e degli altri programmatori.

Continuate a sperimentare e se volete una guida pratica e innovativa leggete il libro “50 algoritmi per imparare Python”, disponibile su Amazon.

Alcuni link utili

Corso in diretta su Python

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