Inscription / Connexion Nouveau Sujet
Niveau Maths sup
Partager :

Programme Python pour trouver médiane

Posté par
Pythagore1234
16-04-20 à 18:37

Bonjour, je dois écrire un programme en python pour trouver la médiane d'une liste. Pour cela je dois passer par ces étapes :
-on recherche le max et le min d'une liste d'entiers,
-on les supprime,
-on recommence jusqu'à obtenir une liste de 1 ou 2 éléments,
-la médiane est l'entier restant ou la moyenne des deux entiers restants

J'ai donc essayé d'écrire ce programme mais je n'arrive pas à obtenir la médiane. Je vous mets ci-dessous mon programme :

def mediane(L) :
    m=0
    n=len(L)
    if n>=3 :
        m = L.remove(max(L))
        m = L.remove(min(L))
    else :
        if n == 2 :
            m = (L[0]+L[1])/2
        else :
            m = L
    return m

Est-ce que vous voyez où sont les erreurs ?

Merci d'avance pour votre aide.

Posté par
carpediem
re : Programme Python pour trouver médiane 16-04-20 à 18:44

salut

je pense que les instructions dans la condition if n >= 3 : sont fausses

tu dois supprimer de ta liste L sont max et son min ...

et en plus cette condition est fausse : tu dois faire cela tant que n >= 3

...

Posté par
carpediem
re : Programme Python pour trouver médiane 16-04-20 à 18:48

et peut-être même est-ce n > 3 ...

Posté par
fm_31
re : Programme Python pour trouver médiane 16-04-20 à 19:04

Bonjour ,
je verrais plutôt une fonction récursive
Cordialement

Programme Python pour trouver médiane

Posté par
Pythagore1234
re : Programme Python pour trouver médiane 16-04-20 à 19:37

Donc je devrais plutôt mettre :
def mediane(L) :
    m=0
    n=len(L)
    while n>=3 :
        m = L.remove(max(L))
        m = L.remove(min(L))
    if n == 2 :
            m = (L[0]+L[1])/2
   else :
            m = L
    return m


A chaque fois Python affiche que argument dans max et min est vide

Posté par
Pythagore1234
re : Programme Python pour trouver médiane 16-04-20 à 19:39

fm_31 @ 16-04-2020 à 19:04

Bonjour ,
je verrais plutôt une fonction récursive
Cordialement

Programme Python pour trouver médiane


mediane(l) est une fonction qui trouve directement la médiane ? Si c'est le cas je n'ai pas le droit de m'en servir pour mon programme.

Posté par
lionel52
re : Programme Python pour trouver médiane 16-04-20 à 19:45

Hello ! Pas besoin d'écrire
m = L.remove(...)

Ca veut rien dire et c'est pas ce que tu veux. L.remove est une opération que tu fais sur la liste L. Elle ne renvoie rien. La liste L est changée en utilisant cette opération

Dans la fonction de fm mediane est appelée récursivement il utilise pas d'autres fonctions que tu connais pas

Posté par
fm_31
re : Programme Python pour trouver médiane 16-04-20 à 19:49

Non , mediane  est un exemple de  fonction qu'on peut écrire pour résoudre l'exercice posé . La particularité de cette fonction , c'est qu'elle s'appelle elle même . C'est ce qu'on nomme une fonction récursive . Mais ce n'est pas obligatoire . On peut écrire une fonction non récursive .

Posté par
fm_31
re : Programme Python pour trouver médiane 16-04-20 à 20:00

Les deux fonctions (mediane1 récursive et mediane2 non récursive) donnent le même résultat .

Programme Python pour trouver médiane

Posté par
carpediem
re : Programme Python pour trouver médiane 16-04-20 à 20:15

il est bien dommage de donner des réponses toutes faites ...

et il manque le cas où L ne contient plus que deux valeurs ...

Posté par
Pythagore1234
re : Programme Python pour trouver médiane 16-04-20 à 20:24

J'ai écris avec vos conseils et pourtant j'ai toujours le même problème avec max et min qui sont vides :

def mediane2(L) :
    m=0
    n=len(L)
    while n>2 :
        L.remove(max(L))
        L.remove(min(L))
    if n == 2 :
            m = (L[0]+L[1])/2
    else :
            m = L[0]
    return m

Posté par
fm_31
re : Programme Python pour trouver médiane 16-04-20 à 20:59

Moi , ça marche . Quel programme principal utilises-tu ?

Posté par
alb12
re : Programme Python pour trouver médiane 16-04-20 à 21:03

salut, le pb vient de n

Posté par
lionel52
re : Programme Python pour trouver médiane 16-04-20 à 21:10

Tout à fait il faut mettre n = len(L) dans la boucle while

Posté par
alb12
re : Programme Python pour trouver médiane 16-04-20 à 21:15

car sinon n a tjs la meme valeur

Posté par
fm_31
re : Programme Python pour trouver médiane 16-04-20 à 21:20

On peut se passer de de la variable n

Programme Python pour trouver médiane

Posté par
alb12
re : Programme Python pour trouver médiane 16-04-20 à 21:31

Pythagore1234 aurait pu trouver tout seul
Quand on me raconte la fin du film, j'enrage.

Posté par
Pythagore1234
re : Programme Python pour trouver médiane 17-04-20 à 10:15

D'accord j'ai compris ! Je me souviendrai qu'il faut mettre len(L) dans la boucle while. Merci beaucoup pour votre aide.

Posté par
alb12
re : Programme Python pour trouver médiane 17-04-20 à 11:53

A titre d'exercice tu peux ecrire un programme pour trouver la mediane en utilisant la methode sort.



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1675 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !