Dessins géométriques : utilisation de doubles boucles ♣
Exercice¶
Écrivez une fonction
carre_pleinqui, pour un entier positif non nul donné, affiche sur la sortie standard un carré plein dont les côtés sont de longueur caractères. Par exemple, pour , la fonction affichera :***** ***** ***** ***** *****
def carre_plein(L):
### BEGIN SOLUTION
caractere = "*"
for i in range(L):
for j in range(L):
print(caractere, end="")
print()
### END SOLUTIONcarre_plein(5)*****
*****
*****
*****
*****
carre_plein(3)***
***
***
Même question mais cette fois la fonction affiche un carré vide. Pour l’exemple précédent, cela donne :
***** * * * * * * *****
def carre_vide(L):
### BEGIN SOLUTION
if L >= 1:
for j in range(L):
print("*", end="")
print()
for i in range(1, L - 1):
print("*", end="")
for j in range(L - 2):
print(" ", end="")
print("*")
if L >= 2:
for j in range(L):
print("*", end="")
print()
### END SOLUTION### BEGIN SOLUTION
## Solution alternative
def carre_vide(L):
for i in range(L):
for j in range(L):
if i == 0 or i == L - 1 or j == 0 or j == L - 1:
print("*", end="")
else:
print(" ", end="")
print()
### END SOLUTIONcarre_vide(5)*****
* *
* *
* *
*****
carre_vide(2)**
**
carre_vide(1)*
carre_vide(0)Transformez votre fonction pour qu’il soit simple de remplacer le caractère
*par un autre caractèrecaractere:
def carre_vide(L, caractere):
### BEGIN SOLUTION
if L >= 1:
for j in range(L):
print(caractere, end="")
print()
for i in range(1, L - 1):
print(caractere, end="")
for j in range(L - 2):
print(" ", end="")
print(caractere)
if L >= 2:
for j in range(L):
print(caractere, end="")
print()
### END SOLUTIONcarre_vide(4, "#")####
# #
# #
####
Écrivez une fonction qui, pour un entier positif donné, affiche le triangle isocèle pointe en haut dont le contour est décrit par des étoiles, de hauteur et de base . Par exemple, pour , la fonction affichera :
* * * * * * * *********
def triangle(
h, caractere="*"
): # dans cette fonction, caractere a la valeur "*" par défaut :
# si la fonction est appelée sans l’argument, il prend cette valeur.
### BEGIN SOLUTION
for i in range(h - 1):
for j in range(h - 1 - i):
print(" ", end="")
print(caractere, end="")
if i > 0:
for j in range(2 * i - 1):
print(" ", end="")
print(caractere, end="")
print()
for j in range(2 * h - 1):
print(caractere, end="")
print()
### END SOLUTION### BEGIN SOLUTION
# Solution alternative
def triangle(h, caractere="*"):
for i in range(h):
for j in range(2 * h - 1):
if i == -j + h - 1 or i == h - 1 or i == j - h + 1:
print(caractere, end="")
else:
print(" ", end="")
print()
### END SOLUTIONVous noterez ci-dessous que l’on a donné une valeur par défaut pour caractere : *. Du
coup, on peut utiliser les deux formes suivantes :
triangle(4) *
* *
* *
*******
triangle(5, "#") #
# #
# #
# #
#########
triangle(2) *
***
triangle(1)*
triangle(0)Écrivez une fonction qui affiche un losange. Par exemple, pour , la fonction affichera :
* * * * * * * * * * * * * * * *
def losange(h, caractere="*"):
### BEGIN SOLUTION
for i in range(0, h):
for j in range(0, h - i - 1):
print(" ", end="")
print(caractere, end="")
if i > 0:
for j in range(2 * i - 1):
print(" ", end="")
print(caractere, end="")
print()
for i in range(h - 2, -1, -1):
for j in range(h - i - 1):
print(" ", end="")
print(caractere, end="")
if i > 0:
for j in range(2 * i - 1):
print(" ", end="")
print(caractere, end="")
print()
### END SOLUTION### BEGIN SOLUTION
## Solution alternative
def losange(h, caractere="*"):
for i in range(2 * h - 1):
for j in range(2 * h - 1):
if (i <= h - 1 and (i == -j + h - 1 or i == j - h + 1)) or (
i > h - 1 and (i == -j + 3 * h - 3 or i == j + h - 1)
):
print(caractere, end="")
else:
print(" ", end="")
print()
### END SOLUTIONlosange(5) *
* *
* *
* *
* *
* *
* *
* *
*
losange(1)*
losange(0)