Aller au contenu

Deux meilleurs scores

Le cadre

Vous venez de développer Flap Flap Bird, un jeu très dur où il faut aider un oiseau à éviter des obstacles. À la fin de la partie, vous enregistrez le score du joueur et vous souhaitez afficher ses deux meilleurs scores. Ceux-ci peuvent être égaux.

On considère les deux listes de scores suivants :

  • scores_1 = [13, 15, 12, 3, 19, 7, 14]

  • scores_2 = [27, 35, 14, 35, 3, 26, 9]

Pour score_1, les deux meilleurs scores sont 19 et 15.

Pour score_2, ce sont 35 et 35.

Il est possible que la liste de scores contienne moins de deux valeurs. Dans ce cas, les meilleures valeurs inconnues sont remplacées par None.

Exercice

Coder une fonction deux_meilleurs qui prend une liste d'entiers scores et renvoie :

  • si la liste contient au moins deux scores :
    • le couple formé par les deux meilleures valeurs max_1 et max_2 avec max_1max_2 ;
  • si la liste ne contient qu'un seul score :
    • le couple (max_1, None)max_1 est le score maximal ;
  • si la liste est vide :
    • le couple (None, None).

⚠ Contraintes : On n'utilisera ici ni max, ni min, ni sort, ni sorted.

Exemples d'utilisation
>>> scores_1 = [13, 15, 12, 3, 19, 7, 14]
>>> deux_meilleurs(score_1)
(19, 15)
>>> scores_2 = [27, 35, 14, 35, 3, 26, 9]
>>> deux_meilleurs(score_2)
(35, 35)
>>> deux_meilleurs([4, 5])
(5, 4)
>>> deux_meilleurs([5, 4])
(5, 4)
>>> deux_meilleurs([5, 5])
(5, 5)
>>> deux_meilleurs([9])
(9, None)
>>> deux_meilleurs([])
(None, None)
La valeur None

None est une valeur spéciale utilisée en Python et qui correspond à un manque de valeur normale. Lorsque l'exécution d'une fonction se termine sans avoir rencontré un return, Python renvoie automatiquement la valeur None.

On peut tester si une variable x est associée à la valeur None de la manière suivante :

🐍 Script Python
if x is None:
    ...

On pourrait également tester x == None mais si x est un objet d'une classe dans laquelle l'égalité a été redéfinie, l'égalité pourrait être vraie, alors que x is None ne le serait pas.

###(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 : /
.128013]x,59/fq7B8r;nb N_o=ylaepcwgu)vd461ç3kRImh?tsP(S02è[-i:050G0y0S0x0$0w0T0q0A0w0x0T0T0u010S0$0z010406050T0D0P0P0x0m0v040W0t0w0D0{0t0o0q020x0P0z0n0q0N0y150m0i0D0y0T050g12141618100z04051D1w1G0g1D100G0$0F0:0=0@0_0Q0$0C0Q0w1U0Q0S0~050+0p0w0y1P0?0^011T1V1X1V0S1%1)1#0S0m1E0S0Q1+1R010h0-0y0o1j0y010:1b0T0z0x0o0_0Y1#2b2d1 1-221)250P27040a0q0U0m0t0z0t0T0$1e1g0)290m0m0y0A2B1w2i0o1E0g1}2N1`1|1{1$0G2k0_1X0o242y1#1M1O0;1,2X0$2Z0o0t2%1#0z2G1E2L2N2^112c1g2)202.0m150w0~0q0J2K2|0 2{2j2~1-3032340Y372d392L2W013e0x33040q0L3i2M103l3c0_3o3q0q0H3u3k2|3m3A340e3E3w3G3y3n0t313p340I3L3a2}1Q3d3Q3f3r0j3V3x3Y3z3!3S3r0l3(3N3*3P3R3B0f3:3b3=3I040J0X3E1H2?1w2%2Q0G1|2V3O0A2/2q0(1N1E2=0y2@38414b0)4j3{2*010M0~0)0h413)4q0B344w3;4q0o0h4t0y0D0c0s2p0-1)0D0m1v1x4k4x200}040V4B4p2 0~0T4b2G4Q2`4T1-4V0E0%3L0q4;0q3W3H0~154J364R3j4?4+0_0t0~0u3E4 4C200M0A0~0r1f0y4:4=4@3O0o4_0x4J3h4}2M564Z1-5204545o3r5h3=595b5d5f4;5y4q4s040h3Q555F4!040c5L50010t4z042,5Q573d4#4%1u4Y3X4q4V4/5w064=5.5q5(580~0$4v5w5:3m4V4X5w5M5Z044`0s4|2^5`3O5T5?4)38665z5a045c2Z5%5{0~0E5X5r515U5K5_5 0_5|6i5i0~5P6r5R5t020C0S0n6m5;6062644S5Y6t6k5+2^5-5/6S6s3n5k5m6G3m5t5v656U5j615l635D6S5g5R6(6J6Y67536=3|6x6,5.6U5H0y1X5^6$5R6u5~6/6W0s5n726M5S5U0$6a4~6}6e6g5e757b4-6^4q68046q7a6n01744*7b6(6y7t6H510~6C6E7o5N62796L7u4-6P386R6-6.7y777K7g6A6@6z7T5O6,6}0~2G0S4O0o7H4,0~5}7x7u6:6*6K3j6U4V0d7-3z7U6v3=7n5,1w4m4i42860g451w0S478b2T2O0x1(88451C4o7C012G0P0s0h0x0M0y0s0Q0L0~1o1q1s1u0q7O7_1J391D0O0w0q1u0S0q2x0@0$8i0q2D8s0$2G0q0D2Z0q8s0K1f8P1c0/2=0t0A0Q1*0G008!1*2G8/0y0m8`8U1*4`0$0P132k0$8C0d0q0T2d0/0S8N8{4?856f5C0g9g8E1H392%3m1/1W1Y1!8m3m2m24260~2s0W0A0m0|8O0U0v1}1f414h8m2_4k9g7%044u804y4A7l7=4F9R4H4J4L0w4N4P9T4U7/9*604$3Q5$9W8n7N7$5R5H5@7}3n0p0~2n9-6N4Wa16V049/4(a4827B6Z536#6b6U0P0$0~409=6j048F3v7R9Q7)7+9|7w7L8n5A9h6hal3O7{9|ay7ja96k9^7b6~709|0o9~04a0aB819,aS4D5!9:7f2M7`aI7Z7u6!ae7W7bah0~7^a!730~ao0 aq9_7(0*ata%9?aU7;8n6(a79;b0am0!a4a-04akb5aC0~0b7|a}3maF9ibcaT046l5,7Q6c5G5?71af76a65#aZ9ubd04b7aV20b9bbawam0b9|6B6D6Fbh6wbxaYaHbCb8ai3~bT0ba?bq6|bw6;bE7.04bgabbQ7JbL7Yb-6_bRa8b)a2bDbl4qbGbYb,bv7!b3bza#bUb_01b9a/bAbmbK5,b$aK0~6 0T7kb|9+an6{7S7=77cac5c0a+cq6)6XbP3=6!aNaXb^clb*b{bI3Oc9b cCb@b4cIbmcH7_5Rb~c74Vcd6Qbq9Q5J0mcM0$bL7d7,cz4DaP0m2d0CckcP5)a c?bFbW7Va:7m0~cu5p6%aPaRcFa27:c_9.bybT0E4.co5Ea_5Vbucvb1cDcOcSc~c6d5a5c(cVbeb:047FbOb=aWcx6+dtcnce7RcpdkdBc|5x7X5ucMb(6QdGdH4^dBcabr20cBc,5Nc3bTcRc}cwdsdqcWdedW1-aL9{dZd9bSdDd%cbdAd*d8a2cXc1a(7EbNdO6*dKc5b!dRdf7!b/d=7DdNeda5d#d^a46(d|dn7Mdubpcf7u5Has0mc+dzcmd7endIdPd}7vc e4cyd+a$6Q844c2N9L444f10890*0,0.9n1N3m0x0G0P1f2A0$8)0p1f0D0T0~1CeYe!e$2B0#0{0S1^040ke+4Q1K1F040U4H0S0#8)2z1k700$9e0w000y0c8{0A0$0A1*2z0q8)0)150o2D8!951t2p0o8O1)8~4I0$0Z2p0q9$9(0q0R9meR45.