Aller au contenu

Utiliser l'IDE python et les QCM⚓︎

Voici un exercice adapté d'un exercice créé par Sébastien Hoarau et Nicolas Revéret sur le site Codex.

Consigne

Réaliser l'exercice (questions 1 et 2), "comme un élève", avec pour objectif d'observer le fonctionnement de l'IDE :

  • lorsqu'on entre un code erroné ;
  • lorsqu'on active/désactive les tests publics en cliquant sur ### ;
  • lorsqu'on atteint le nombre maximum d'essais ;
  • lorsqu'on entre un code correct.

Puis répondre à la question 3, en allant si besoin explorer sur la forge les fichiers qui ont permis de réaliser cette page.

Couleurs en HTML⚓︎

Une couleur en HTML est représentée par une chaine de caractères de sept caractères dont le premier est '#' ; les six autres, groupés 2 par 2 forment 3 entiers en hexadécimal (base 16). Le premier entier est la quantité de rouge ; le deuxième la quantité de vert et le troisième est la quantité de bleu. Ces trois valeurs hexadécimales sont comprises entre "00" et "FF".

Voici quelques couleurs en HTML :

  • "#ED774F" : deep orange,
  • "#0000FF" : bleu,
  • "#000000" : noir.

Une autre façon de représenter une couleur est par un triplet \((r, v, b)\) de valeurs décimales comprises entre \(0\) et \(255\) : \(r\) est la quantité de rouge, \(v\) la quantité de vert et \(b\) la quantité de bleu.

On souhaite écrire une fonction html_vers_rvb qui prend une chaine de caractères représentant une couleur HTML en paramètre et qui renvoie le triplet de décimaux \((r, v, b)\) représentant la même couleur.

On rappelle les valeurs décimales des 16 chiffres hexadécimaux sont : "0" vaut \(0\), jusqu'à "9" qui vaut \(9\), puis "A" vaut \(10\), "B" vaut \(11\) ainsi de suite jusqu'à "F" qui vaut \(15\).

Pour calculer la valeur décimale d'un nombre hexadécimal de deux chiffres \((ab)_{16}\), on fera la somme du produit de la valeur décimale du chiffre des seizaines \(a\) par \(16\) et de la valeur décimale du chiffre des unités \(b\).

Indications
  • Le nombre hexadécimal "B5" vaut \(11\times 16 + 5\) soit \(181\) en décimal.

  • "00" vaut \(0\times 16 + 0\) soit \(0\).

  • Si couleur = "#F307D6", couleur[1] vaut 'F'.

Question 1

Écrire la fonction hex_int qui prend deux chaines d'un caractère a et b en paramètres (de sorte que \((ab)_{16}\) est un entier en hexadécimal) et renvoie la valeur décimale associée, en utilisant le dictionnaire HEX_DEC ;

Exemples :

>>> hex_int('B', '5')
181
>>> hex_int('0', '0')
0

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
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 : 5/5

.C;ySl7=bB]kX}f5a8[_ om"v:sD1 40H9AxFE(/2qn+u,icphtrdgP{6*e)3030T0Z0R0j0N080t0n0O080j0t0t0a0q0R0N0P0q020w030t0L0p0p0j0S0602070o080L0^0o0J030G0 1113150}0P02031l1e1o0G1l0}0T0N0r0-0/0;0?0Q0N0U0Q081C0Q0R0{030(0b080Z1x0:0=0q1B1D1F1D0R1L1N1J0R0S1m0R0Q0-180t0P0j0J0?0H0q1P1z0q0h0*0Z0J0j0p0Z1J1+1-1=1R1^1N1{1}0{0V0S0o0P0o0t0N1b0J0n0%1)0S0S0Z0O2g1e200J1m0G1'2t1#1%1$1K0T220?1F0J1`2d1J1u1w0.1Q2D0N2F0J0o2J1J0P2m1m2r2t2X0~1,2h2L1?2Q0S12080{0v2q2#0|2!212%1R2(2*0{0H2.1-2:2r2C0q2^0j2+020#2|2s0}2 2?0?32340x372~2#303d0{0i3g393i3b310o2)330{0X3n2;2$1y2@3s2_02093x3a3A3c3C3u020k3g1p2V1e2J2w0T1%2B3q0O2R1~1m3S1n3Q2Z1f2/033Y0%2W3p3I310{0z0E0f0m0u0E043g0n3y300o0{0a3}3 3q0`020W3O3H2M0q0t1:02000I0L0o0R050y4h4j4l4a3/4c470s444b1?0p0N0{0y4r2=3:470M4w4s1?4e0{4o4k050v4N4q3)2}454F0{4v4T2s3~4x1R4z2,4D3z4t0{4H4Z024#4J1R4L4g4i4O0H4R054)304u4I4E4c4'022{4.4V4+024-2X4:514K4f4{0#4{4}464X504*4y4A355j4W593}0w0n5w5x5y5c5n4=5f4^4l0x5i564$0?4 4.5A30533f5I4;5K4,5m304?4{0i5H2Z5J0q5L5b575o3l5r585a2/5N3q5X5E050X5!3*5$5'5/5)4%5p3w5R5d1R4G5V5;5D4p05095_4U5{5l5M5~0?533F625B5T5t5M5v5z5z6h4d684O0k6c2s6t5|2}5:3:533N6l4~5U6g5$5=690A6y3.636n4Y5(5$530A5,1?656K5S6u4M5?0B6P6A6f6U6$530v4C6H5k6o6-6R6%4@690c6*6e026T5}6V5p0v2-6=5s5.6C6q6r5x6t6M4O046~6$6B4!6t6/555#7j6J6^6m6`4{0u7i6_7k4/7m7436775-663:7f4l0E7x7t7z6D52745Q7p7y7r726$7I050D7L6I707G7P2,3m7E6Z0{0g3n0w3o6_0e0{0%0h7%2'0h0{0Q0Z0C0m2O0R6Y640{0F833c0{0j875%7U6C6t0J0{0b8b470!712}7b7O1?7=022m0R0L0S1d6#6_8g023?3^3`3|7*84020l8b8A8a8G6n0d7_1R41020Y8Q6i74617s400{0K8V3;8B3@3_3{8j0{8J8N8'8i8/478P4.0}0G3,0Z2t2U8|3R1v3T2w2z2u0j1M8 0G3S8_0%0(0*0t02.
Question 2

Écrire la fonction html_vers_rvb en appelant de la fonction précédente, même si celle-ci n'a pas été trouvée.

Exemples

>>> html_vers_rvb("#ED774F")
(237, 119, 79)
>>> html_vers_rvb("#0000FF")
(0, 0, 255)
>>> html_vers_rvb("#000000")
(0, 0, 0)

###(Dés-)Active le code après la ligne # Tests (insensible à la casse)
(Ctrl+I)
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 : 5/5

.ySl=b]kf5a[_ om"v:s1 4x(/2nu,icphtrdgP6e)3030D0H0B0d0x060m0g0y060d0m0m070j0B0x0z0j020o030m0v0i0i0d0C0402050h060v0!0h0u030s0*0,0.0:0(0z0203130|160s130(0D0x0k0S0U0W0Y0A0x0E0A061k0A0B0%030N08060H1f0V0X0j1j1l1n1l0B1t1v1r0B0C140B0A0S0?0m0z0d0u0Y0t0j1x1h0j0b0P0H0u0d0i0H1r1Q1S1X1z1!1v1%1(0%0F0C0h0z0h0m0x0_0u0g0L1O0C0C0H0y1~0|1+0u140s1M2b1J1L1K1s0D1-0Y1n0u1$1{1r1c1e0T1y2l0x2n0u0h2r1r0z2414292b2F0)1R1 2t1Y2y0C0-060%0n282J0'2I1,2L1z2N2P0%0t2T1S2V292k0j2!0d2Q020J2'2a0(2*2Y0Y2-2/0p2=2)2J2+2{0%0c2~2@302_2,0h2O2.0%0G2~172D0|2r2e0D1L2j380y2z1)143j153h2H0}2U033p0L2E371g1z0a0%0L0b2~0g2W2K3E2`0b0%1p0i060f0k0H0C0m0f0C0k083f2^3O0j0$020r3'3D2u2,3R0B3T3.2X3)3+0I0l350g3 3L3(3:3G02240B0v0C0{3x2(413/1Y3+3-4b2?404k4d3_3:0u3R0H0q0f2w0B3^3N3:4g4w313=3@4i3C4n4f0%0e4A380i0x2R4K3`0%090w3K3M4B023S064P4y4I4!1Y4M2$4%1z3+090I4T4E0o4l404V384p4X4r4t0u4v4E4@4Q3,4*2`4C4Z4 424H024J574e1z4(2:533*4R4/2F4m4x2M555h3+5b2H585e4N022}5c4G4+4R4.3~4=5m4W0A4{4u5q0%4h5t5d544X3?565O5A0Y5r5h5f345z5n5B024S4U5u5Q4Y5L5a5Y5w3e5#2+4,5D4:4k504#020I350|3A0H2b2C623i1d3k2e2h2c0d1u650s3j0(6f0M0O0Q02.
Question 3

  1. Peut-on utiliser la fonction hex_int de la question 1 pour répondre à la question 2, même si on ne l'a pas trouvée ?

    • non

    • oui

    • peut-être

  2. Peut-on faire apparaître le corrigé d'une question , même si on ne l'a pas résolue ?

    • non

    • oui

    • peut-être

  3. Peut-on désactiver les tests publics ?

    • non

    • oui

    • peut-être

  4. Peut-on désactiver les tests privés ?

    • non

    • oui

    • peut-être

  5. Peut-on utiliser la fonction int dans la question 1, par exemple pour trouver la valeur décimale associée à un chiffre hexadécimal ?

    • non

    • oui

    • peut-être

  6. Le fichier python utilisé dans la question 1 comporte-t-il une section secrets ?

    • non

    • oui

    • peut-être

  7. Le fichier python utilisé dans la question 2 comporte-t-il une section env ?

    • non

    • oui

    • peut-être