Sommario
Python programming skill terza parte: disegnamo in modalità testo come ultimo pattern quattro frecce:
right arrow
*
* *
* * *
* * * *
* * * * *
* * * *
* * *
* *
*
left arrow
*
* *
* * *
* * * *
* * * * *
* * * *
* * *
* *
*
upward arrow
*
* * *
* * * * *
* * * * * * *
* * * * * * * * *
downward arrow
* * * * * * * * *
* * * * * * *
* * * * *
* * *
*
Esercizio Python 7 – freccia verso destra (right arrow)
""" print right arrow * * * * * * * * * e.g. 0 1 2 3 4 5 6 7 8 9 i test N-1-i 0 * 0, j<=0 9 1 * * 1, j<=1 8 2 * * * 2, j<=2 7 3 * * * * 3, j<=3 6 4 * * * * * 4, j <5 5 5 * * * * 5, j <4 4 6 * * * 6, j <3 3 7 * * 7, j <2 2 8 * 8, j <1 1 9 9, j <0 0 """ print("right arrow") for i in range(N): for j in range(N): if j <= i and j < N - 1 - i: print("*"), else: print(" "), print(" ") # a capo
Ho stampato un tracing e ho riportato tutti i valori delle variabili per le varie configurazioni disegnate. Come si vede, si tratta di combinare le condizioni che compaiono negli esercizi 3 e 6 (BLT e TLT), solo che sostituisco la condizione j <= N - 1 - i
con j < N - 1 - i
in modo da non disegnare la diagonale BLTR che risulterebbe col disegnare una freccia “spuntata”.
Esercizio Python 8 – freccia verso sinistra (left arrow)
""" print left arrow * * * * * * * * * e.g. 0 1 2 3 4 5 6 7 8 9 i test N-1-i 0 * 0, j>=9 9* 1 * * 1, j>=8 8* 2 * * * 2, j>=7 7* 3 * * * * 3, j>=6 6* 4 * * * * * 4, j>=5 5* 5 * * * * *5, j> 5 4 6 * * * *6, j> 6 3 7 * * *7, j> 7 2 8 * *8, j> 8 1 9 *9, j> 9 0 """ print("left arrow") for i in range(N): for j in range(N): if j >= i and j > N - 1 - i: print("*"), else: print(" "), print(" ") # a capo
Per girare la freccia a sinistra è necessario ribaltare entrambe le condizioni di test:
- da
j<=i
aj>=i
- da
j <= N - 1 - i
aj > N - 1 - i
L’assenza dell’= sulla seconda condizione, al solito, evita il disegno della doppia punta.
Possiamo indovinare che anche per le frecce up e down si dovrà fare lo stesso…
Esercizio Python 9 – freccia verso l’alto (upward arrow)
""" print upward arrow * * * * * * * * * e.g. 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 N-1-i test i 5 * 4 <= j < 5 6 * * * 3 <= j < 6 7 * * * * * 2 <= j < 7 8 * * * * * * * 1 <= j < 8 9 * * * * * * * * * 0 <= j < 9 """ print("upward arrow") for i in range(N): for j in range(N): if N - i - 1 <= j < i: print("*"), else: print(" "), print(" ") # a capo
Qui è ormai evidente: è l’intersezione dei due esercizi BLT e BRT (esercizi 3 e 5). L’ultimo esercizio è la freccia verso il basso e, ormai, tutti gli arcani dovrebbero essere svelati e possiamo dire “com’era facile!”
Esercizio Python 10 – freccia verso il basso (downward arrow)
""" print downward arrow * * * * * * * * * e.g. 0 1 2 3 4 5 6 7 8 9 i test N-1-i 0 * * * * * * * * * 0 <=j< 9 1 * * * * * * * 1 <=j< 8 2 * * * * * 2 <=j< 7 3 * * * 3 <=j< 6 4 * 4 <=j< 5 5 6 7 8 9 """ print("downward arrow") for i in range(N): for j in range(N - i): if i <= j < N - 1 - i: print("*"), else: print(" "), print(" ") # a capo
Spero abbiate trovato divertenti questi piccoli esercizi (sì… anche se alla fine sono un po’ silly).
Alle prossime pillole!
Altre pillole Python sul disegno di frecce
Disegnare frecce 1 – Disegnare frecce 2
Commenti recenti