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".

Exemples

Voici quelques couleurs en HTML :

  • "#C0392B" une sorte de brun rouge,
  • "#00FF00" du vert uniquement,
  • "#000000" du 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 le produit de la valeur décimale du chiffre des seizaines \(a\) par \(16\) plus 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\).

  • En prenant couleur = "#F307D6", couleur[1] renvoie 'F'.

Il est demandé de :

  1. compléter le dictionnaire HEX_DEC qui donne les valeurs décimales des chiffres hexadécimaux ;

  2. é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 ;

Exemples
🐍 Console Python
>>> 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)
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 : 10/10
.1280135q/(+0{=_a1ki o4m2:}Xfed,wy]BczrCvps3[D*nPg)ulF;Stx9EbAhH867050y0x0Y0k0n0U0K0o0E0U0k0K0K0i010Y0n0J010406050K0T0r0r0k0G0B040X0p0U0T100p0P050d17191b1d150J04051t1m1w0d1t150y0n0I0^0`0|0~0(0n0R0(0U1K0(0Y13050:0$0U0x1F0{0}011J1L1N1L0Y1T1V1R0Y0G1u0Y0(0^1g0K0J0k0P0~0s011X1H010w0=0x0P0k0r0x1R1@1_1~1Z211V2426130a0o0Q0G0p0J0p0K0n1j0P0o0.1=0G0G0x0E2r1m290P1u0d1:2E1-1/1.1S0y2b0~1N0P232o1R1C1E0_1Y2O0n2Q0P0p2U1R0J2x1u2C2E2,161^2s2W1 2#0G1a0U130o0l2B2:142/2a2=1Z2@2_2{0s2~1_302C2N01350k2`040o0L392D153c330~3f3h0o0q3l3b2:3d3r2{0b3v3n3x3p3e0p2^3g2{0+3C312;1G343H363i0,3M3o3P3q3R3J3i0*3V3E3X3G3I3s0!3%323)3z040l0g3.3O2X3*3S0l2}1n2 3D3/3`3;0l383 3a413_2?3Z3h0l3k473m3N3y4c130l3u4g3w424b3+4l3B4o494j4s3=3L4v4i3F443U4B3W434k3=3$4G3(4I4y0l3-4M4q3Q4y0s3@4S4a4U3S0s3~2,4w4D4J0s462.1z2*1m2U2H0y1/2M3F0E2$271u4=1v4:4.2.4{0.2+4N2?130)0#0v0j0N0#0H3v0o4C3)0p130i5h5j3`12040h3C0o5v5i4H1 0K1|04020c0T0p0Y0W0g5D5F5H3v5p1 5r0t5o5y1Z0r0n134X2.5T0~5r0z5u5w5O1Z5A135K5G0W0l5.5M4o5*5#135R4o5x575U5W3=5N5!015$5(5v5^015,5C5E5/0s5=0W625~5_045{2,5}4T0~5V134-2 68654v5w6n4Z0~6a6f0L6f6h6o645`5S6i016q044f5Z6K6v4(6x686B6c5H0q6E5@635Q6J6G6M4n6P6G6R406T636V5L0W0b6Z6+6z6H6k6%6`6M4u6_3d6-486/6K6;5/0+6^6t6#6I5|686M4A713F733m756G775H0,7a3a6u7d6m7f604F7i3)7k147m6`7o0W0*7r2D7t6|7e636M4L7z5q135%6w5)6:5B6f0!7I566,7u2 6y3d6M4R7Q5P7S667)3F7F0%7!7K6l7(7w4l5Y7b6Q7/7U677W5-6W0W0D7^7c7L7v7N603}6F6`7B067D3d7F0H89808b7{8d4l6s7s8a7T6S7V767X860N8o7$8q3a7;3)6M4e8g72818y838A856=0#8E8h7%8H7|3=6*7 8F8x6.8z7n8B6=0V8V8N8G2D8I3`8K708$8W048(487K0u3C064)3)0m130.0w8M3F0A2{993:0w130(0x0Z0j2Z0Y9d7R040e9n58040K0x0n0F0;2Q9r1Z7B8?9s0T0P2q0x9A6j0S7`748*6`95042x0Y0T0G1l7M6K0P595b5d5f9J6{0M9(9Z9t9v9x2Z9I6!8p0C6}3d5l040O9^3F8K7h8r6K9`0f9}3:9!5c5e5g9=8F9*ab6`9,9F9H9(5r9@4B0d540x2E2)ap4;1D4?2H2K2F0k1Uas0d4=15aC0/0;0?04.
  1. écrire la fonction html_vers_rvb en vous servant de la fonction précédente.
Exemples
🐍 Console Python
>>> html_vers_rvb("#C0392B")
(192, 57, 43)
>>> html_vers_rvb("#00FF00")
(0, 255, 0)
>>> html_vers_rvb("#000000")
(0, 0, 0)
###(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 : 10/10
.128013vp5s3[/(nP=g)ulS_a1kti ox4m2:bfedw,yh]6cr050H0G0v0s0w0p0e0x0O0p0s0e0e0l010v0w0c010406050e0o0B0B0s0P0K040q0y0p0o0*0y0j050h0;0?0^0`0/0c04051a131d0h1a0/0H0w0b0Y0!0$0(0L0w0m0L0p1r0L0v0-050T0E0p0G1m0#0%011q1s1u1s0v1A1C1y0v0P1b0v0L0Y0}0e0c0s0j0(0C011E1o010F0V0G0j0s0B0G1y1X1Z1(1G1+1C1.1:0-0a0x0k0P0y0c0y0e0w100j0x0R1V0P0P0G0O28131?0j1b0h1T2l1Q1S1R1z0H1^0(1u0j1-251y1j1l0Z1F2v0w2x0j0y2B1y0c2e1b2j2l2P0:1Y292D1)2I0P0@0p0-0t2i2T0.2S1@2V1G2X2Z0-0C2%1Z2)2j2u012.0s2!040f2=2k0/2^2,0(2{2}0A302@2T2_360-0d39323b342`0y2Y2|0-0N391e2N132B2o0H1S2t3j0O2J1;1b3u1c3s2R142(053A0R2O3i1n1G0u0-0R0F3q333P0(0I0-0x3V3O2E2`0F0-1w0B0p0r0b0G0P0e0r0P0b0E3$2+3X010,040i3{2U3}0j3+0v3-422_3 0n0D3g0x4f3#3W3(3R042e0v0o0P123I2?4h3%1)3 414r314g4A4t3|3(45040L0G0z0r2G0v493j4w4N4446484y3N4D4v0-0g4Q3(0B0w2#4!4X040M0J394C434E4S0p4)1G3 4Z4U2*4:1)4$2:4@0(3 0M0n4-4U064B4g4|3c3+4I4K0j4M4{4i4*4x2R5j2-4=513~4Y5q4 2~5q53562P4/5c4G474?5i4u4^5s5F4W1G5u385J4}5H4+554e595A3j4F4H4J4L5w0-5l3J5n355p5O4a5I5m5G0(5u3f5,4O0-4,4.5b5W5+5/5K525.5(5:015u3p5@3}535S574A5|690-0n3g133L0G2l2M6l3t1k3v2o2r2m0s1B6o0h3u0/6y0S0U0W04.