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<=iaj>=i - da
j <= N - 1 - iaj > 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