Cornici quadrate

Una cornice quadrata

Disegna una cornice quadrata di asterischi

*****  (A)
*   *  (B)
*   *  (B)
*****  (A)

Ci sono due tipi di righe

  • (A), riga piena di asterischi
  • (B), riga vuota

1

for colonna in range(NUM):        # (A) prima riga piena
    print("*", end="")
print()

for riga in range(NUM-2):         # (B) NUM-2 righe intermedie
    print("*", end="")            #     un asterisco
    for colonna in range(NUM-2):  #     NUM-2 spazi
        print(" ", end="")
    print("*")                    #     asterisco finale

for colonna in range(NUM):        # (A) ultima riga piena
    print("*", end="") 
print()

2

Gli asterischi occupano la prima e l’ultima riga e la prima e l’ultima colonna…

for riga in range(1,NUM+1):
    for colonna in range(1,NUM+1):
        if(riga == 1) or (riga == NUM) or (colonna == 1) or (colonna == NUM):
            print("*", end="")
        else:
            print(" ", end="")
    print()

Due cornici concentriche

Osserva

************  (A)
*          *  (B)
*          *  (B)
*  ******  *  (C)
*  *    *  *  (D)
*  *    *  *  (D)
*  *    *  *  (D)
*  *    *  *  (D)
*  ******  *  (C)
*          *  (B)
*          *  (B)
************  (A)

Ci sono 4 tipi di righe

  • (A), riga piena di asterischi
  • (B), riga vuota
  • (C), riga semipiena
  • (D), riga semivuota

1

NUM1  = 12
NUM2  = 6
vuote = (NUM1-NUM2)//2-1

for colonna in range(NUM1):       # (A) prima riga piena
    print("*", end="")
print()

for riga in range(vuote):         # (B) prime righe vuote
    print("*", end="")
    for colonna in range(NUM1-2):      
        print(" ", end="")
    print("*")

print("*", end="")                # (C) riga semipiena
for i in range(vuote):     
    print(" ", end="")
for colonna in range(NUM2):  
    print("*", end="")
for i in range(vuote):     
    print(" ", end="")
print("*")

for colonna in range(NUM2-2):     # (D) righe semivuote
    print("*", end="")                
    for i in range(vuote):     
        print(" ", end="")
    print("*", end="")
    for colonna in range(NUM2-2):  
        print(" ", end="")
    print("*", end="")
    for i in range(vuote):     
        print(" ", end="")
    print("*")

print("*", end="")                # (C) riga semipiena
for i in range(vuote):     
    print(" ", end="")
for colonna in range(NUM2):  
    print("*", end="")
for i in range(vuote):     
    print(" ", end="")
print("*")                    

for riga in range(vuote):         # (B) ultime righe vuote
    print("*", end="")
    for colonna in range(NUM1-2):      
        print(" ", end="")
    print("*")

for colonna in range(NUM1):       # (A) ultima riga piena
    print("*", end="") 
print()

2

Gli asterischi occupano righe e colonne specifiche

NUM1 = 12 
NUM2 = 6
num3 = (NUM1-NUM2)//2+1
num4 = NUM1-num3+1

for riga in range(1,NUM1+1):
    for colonna in range(1,NUM1+1):
        if(riga == 1) or (riga == NUM1) or (colonna == 1) or (colonna == NUM1) or           \
          ((riga == num3) or (riga == num4)) and (colonna >= num3) and (colonna <= num4) or \
          ((colonna == num3) or (colonna == num4)) and (riga >= num3) and (riga <= num4):
            print("*", end="")
        else:
            print(" ", end="")
    print()

Continua…