Aller au contenu

Losange creux⚓︎

L'objectif de cet exercice est d'écrire une fonction qui affiche du texte sous la forme

📤 Sortie
######   ######
#####     #####
####       ####
###         ###
##           ##
#             #
##           ##
###         ###
####       ####
#####     #####
######   ######
  • Ici, la première ligne est composée de 6 #, puis 3 espaces, puis 6 # ; des croisillons.
  • Pour afficher cette ligne, on peut faire print('#' * 6 + ' ' * 3 + '#' * 6)
  • Il y a \(2×6-1=11\) lignes.
  • Le motif possède deux axes de symétrie ; verticalement et horizontalement.

Exercice

Écrire une fonction récursive telle que losange(n, p) affiche un motif tel que décrit ci-dessus, avec une première ligne de n croisillons, puis p espaces, puis n croisillons.

###

def losange(n, p):bksl-nl ...bksl-nl bksl-nlbksl-nlbksl-nlbksl-nllosange(6, 3) # pour obtenir la figure de l'énoncé.bksl-nlbksl-nl

Indice

Dans cette figure, obtenue avec losange(6, 3), y a-t-il une autre figure incluse, obtenue avec losange(n, p) ?

  • Quels sont alors les paramètres n et p ?
  • Que fait-on d'autre pour la figure complète.
Réponse
🐍 Script Python
def losange(n, p):
    if n > 0:
        ligne = '#' * n  +  ' ' * p  +  '#' * n
        print(ligne)
        losange(n - 1, p + 2)
        print(ligne)