Aller au contenu

Triangles en ASCII

Exercice en trois parties

Dans un programme, l'ordre des instructions est bien sûr important !

Ici, vous pourrez résoudre les trois parties de manières totalement indépendantes.

  • La partie 1, concerne la fonction affiche_ligne qui prend un entier k en paramètre et qui affiche une ligne de k caractères '#'.
  • La partie 2, concerne la fonction triangle_bas qui prend un entier n en paramètre et qui affiche un triangle de hauteur n pointe en bas.
  • La partie 3, concerne la fonction triangle_haut qui prend un entier n en paramètre et qui affiche un triangle de hauteur n pointe en haut.
🐍 Console Python
>>> affiche_ligne(4)  # affiche une ligne de 4 '#'
####
>>> triangle_bas(4)  # affiche un triangle pointe en bas de 4 lignes
####
###
##
#
>>> triangle_haut(4)  # affiche un triangle pointe en haut de 4 lignes
#
##
###
####

Partie 1

Il y a plusieurs façons correctes de coder une fonction affiche_ligne. Parmi les possibilités, regardez et étudiez :

🐍 Script Python
def affiche_ligne(k):
    "Affiche k caractères '#' sur une ligne"
    ligne = ""
    for _ in range(k):
        ligne = ligne + '#'
    print(ligne)
🐍 Script Python
def affiche_ligne(k):
    "Affiche k caractères '#' sur une ligne"
    ligne = '#' * k
    print(ligne)
🐍 Script Python
def affiche_ligne(k):
    "Affiche k caractères '#' sur une ligne"
    for _ in range(k):
        print('#', end="")
    print()
🐍 Script Python
def affiche_ligne(k):
    "Affiche k caractères '#' sur une ligne"
    for _ in range(k):
        print("", end='#')
    print()
🐍 Script Python
def affiche_ligne(k):
    "Affiche k caractères '#' sur une ligne"
    ligne = croisillons(k)  # il manque la fonction croisillon !!!
    print(ligne)

Coder une fonction récursive croisillons qui prend en paramètre k, un entier et qui renvoie une chaine de caractères composée de k croisillons. La fonction croisillons n'affiche pas, elle renvoie !

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : /
.1280135/fr;nb o=ylaepcwgu)vd4613kRmhtsP(S0+2-i:050w0o0F0n0O0m0G0i0q0m0n0G0G0k010F0O0p010406050G0t0D0D0n0e0l040J0j0m0t0*0j0g050c0;0?0^0`0/0p04051a131d0c1a0/0w0O0v0Y0!0$0(0E0O0s0E0m1r0E0F0-050T0h0m0o1m0#0%011q1s1u1s0F1A1C1y0F0e1b0F0E1E1o010d0V0o0g0n0D0o010Y0}0G0p0n0g0(0M1y1,1.1V1G1Y1C1#1%0-0a0i0H0e0j0p0j0G0O100g0i0R1*0e0e0o0q28131?0g1b0c1T2l1Q1S1R1z0w1^0(1u0g1!251y1j1l0Z1F2v0O2x0g0j2B1y0p2e1b2j2l2P0:1-292D1W2I0e0@0m0-0z2i2T0.2S1@2V1G2X2Z0-0M2%1.2)2j2u012.0n2!040A2=2k0/2^2,0(2{2}0x302@2T2_360-0b39323b342`0j2Y2|0-0y391e2N132B2o0w1S2t3j0q2J1(1b3u1c3s2R142(053A0R2O3i1n1G0B0-0R0d3q333P0(0r0-0i3V3O2E2`0d0-0q220O260m0m110G3$2+3X010,040I3@2U3_0g0-0B3~2_3{0u0P3g0i4a3#3W3(0G1;04010C1!0v0j0O1D0t2x0Y0E0U4q2b0B0i00030001494b2*3 3(3R040O3U3I2?4c3%2W42394N3^3(0j0-020m0F0f0k4R4E2_0D0O0-0K443j3{484L314b4?4S4F1W4H2e0F0t0e124;044^2_4f0-014B51064?4%3j4H0o0W0o4-3_4/4C4@535d0-4|4~502P5n403+3-3/3;0g3?515c5j0-3}5C4d4P0443515u4U0-0N4$5I1G4)2#5i3(465R4O1G4V040L5Z4T1W0G0z0-4y003g133L0o2l2M5@3t1k3v2o2r2m0n1B5`0c3u0/640S0U0W04.

Contraintes

Pour ces dernières parties d'exercice d'écriture, on devra uniquement utiliser la fonction affiche_ligne qui prend un entier k en paramètre et qui affiche une ligne de k caractères '#'.

Partie 2

Coder une fonction récursive triangle_bas prenant un entier n en paramètre et qui affiche (avec affiche_ligne) un triangle pointe en bas.

🐍 Console Python
>>> triangle_bas(4)  # affiche un triangle pointe en bas de 4 lignes
####
###
##
#
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : /
.1280135/fr;nb _o=ylaepcwgu)vd413kAmhtsP(S02-i:050x0p0F0o0N0n0G0i0r0n0o0G0G0l010F0N0q010406050G0u0D0D0o0e0m040J0k0n0u0)0k0g050c0:0=0@0_0.0q040519121c0c190.0x0N0w0X0Z0#0%0E0N0t0E0n1q0E0F0,050S0h0n0p1l0!0$011p1r1t1r0F1z1B1x0F0e1a0F0E1D1n010d0U0p0g0o0D0p010X0|0G0q0o0g0%0L1x1+1-1U1F1X1B1!1$0,0a0i0H0e0k0q0k0G0N0 0g0i0Q1)0e0e0p0r27121=0g1a0c1S2k1P1R1Q1y0x1@0%1t0g1Z241x1i1k0Y1E2u0N2w0g0k2A1x0q2d1a2i2k2O0/1,282C1V2H0e0?0n0,0z2h2S0-2R1?2U1F2W2Y0,0L2$1-2(2i2t012-0o2Z040A2;2j0.2@2+0%2`2|0y2 2?2S2^350,0b381d2M122A2n0x1R2s33010r2I1%1a3j1b3h2Q132%053q0Q2N3a3o0B0,0Q0d3f321m1F0s0,0i3K3E3M340d0,1P0N1-0t1B0j0h0!3R2*3T010+040I3)2T3+0g0,113y2=2)3;2D3,0,0v0O38313S3}3O040i483Q3_2j3{2^0G0x0,014i0C0d1X0r0E1C0u283X3Z1B0i232F0F1C1Z0i3%0G4i0142493Q3L3}3G040N3J4b474d3o3?043^2O4I441V0k0,020t0F0f384X3*3}0D0N0,0K3:2^3-414P064H4H4R3=0,0o4l0N4n0p0j1J2w4=3o3-3/4P4}3}4T4V3z4J1V3-0v4G4{485d2V3W0e3Y0g3!544C583+5a5y5e3@4*5p1F4!040M5E5i1F4.2!5B5j3 42123B0p2k2L5V3i1j3k2n2q2l0o1A5Y0c3j0.5,0R0T0V04.

Partie 3

Coder une fonction récursive triangle_haut prenant un entier n en paramètre et qui affiche (avec affiche_ligne) un triangle pointe en haut.

🐍 Console Python
>>> triangle_haut(4)  # affiche un triangle pointe en haut de 4 lignes
#
##
###
####
###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
Entrer ou sortir du mode "deux colonnes"
(Alt+: ; Ctrl pour inverser les colonnes)
Entrer ou sortir du mode "plein écran"
(Esc)
Tronquer ou non le feedback dans les terminaux (sortie standard & stacktrace / relancer le code pour appliquer)
Si activé, le texte copié dans le terminal est joint sur une seule ligne avant d'être copié dans le presse-papier
Évaluations restantes : /
.1280135/fr;nb _o=ylaepcwgu)vd413kAmhtsP(S02-i:050x0p0F0o0N0n0G0i0r0n0o0G0G0l010F0N0q010406050G0u0D0D0o0e0m040J0k0n0u0)0k0g050c0:0=0@0_0.0q040519121c0c190.0x0N0w0X0Z0#0%0E0N0t0E0n1q0E0F0,050S0h0n0p1l0!0$011p1r1t1r0F1z1B1x0F0e1a0F0E1D1n010d0U0p0g0o0D0p010X0|0G0q0o0g0%0L1x1+1-1U1F1X1B1!1$0,0a0i0H0e0k0q0k0G0N0 0g0i0Q1)0e0e0p0r27121=0g1a0c1S2k1P1R1Q1y0x1@0%1t0g1Z241x1i1k0Y1E2u0N2w0g0k2A1x0q2d1a2i2k2O0/1,282C1V2H0e0?0n0,0z2h2S0-2R1?2U1F2W2Y0,0L2$1-2(2i2t012-0o2Z040A2;2j0.2@2+0%2`2|0y2 2?2S2^350,0b381d2M122A2n0x1R2s33010r2I1%1a3j1b3h2Q132%053q0Q2N3a3o0B0,0Q0d3f321m1F0s0,0i3K3E3M340d0,1P0N1-0t1B0j0E0o0~3R2*3T010+040I3*2T3,0g0,113y2=2)3=2D3-0,0v0O38313S3~3O040i493Q3`2j3|2^0G0x0,014j0C0d1X0r0E1C0u283X3Z1B0i232F0F1C1Z0i3%0~4j01434a3Q3L3~3G040N3J4c484e3o3@043_2O4J451V0k0,020t0F0f384Y3+3~0D0N0,0K3;2^3.424Q064I4I4S3?3W0e3Y0g3!0p3$3(0F4?3o3.3:4Q4~3~4U4W2%4,3}4!0,0M4+5e1V4/2!593,3.0v4H4|495p2,0,0o4m0N4o551J2w5t3~5b5K2V3^5N1F5v43123B0p2k2L5W3i1j3k2n2q2l0o1A5Z0c3j0.5-0R0T0V04.