Triage en programmation orienter objet (python)

Résolu/Fermé
Utilisateur anonyme - Modifié le 24 avril 2020 à 08:25
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 - 4 mai 2020 à 13:48
Bonjour,
voici mon code qui devrait effectuer les méthodes de triages pour un tableau t , lorsque je fais l'appellation ''
g=Triage([1,9,10,0,2,17,-7,-2])'' et ''g.BulleA()'' 

on me dit BulleA() missing 1 required positional argument: 't'

Quelqu'un pourrait m'aider SVP ? voir le code ci-dessous

import numpy as np

#Triage en mode ascendant et descendant  avec les méthodes : Bulles, Swap, Insertion, Selection

class Triage():
    def __init__(soi,t):
        soi.t=t
#
    def Swap(soi,i,j):        
        temp=soi.t[i]
        soi.t[i]=soi.t[j]
        soi.t[j]=temp
        return(soi.t)


    def BulleA(soi,t):
        N=len(soi.t)
        for i in np.arange(0,N-1):
             for j in np.arange(0,N-1-i):
                if (soi.t[j]>soi.t[j+1]):
                    Triage.Swap(soi.t,j,j+1)
        return(soi.t)            
#   
    def BulleD(soi):
        N=len(soi.t)
        for i in np.arange(0,N-1):
            for j in np.arange(0,N-1-i):
                if (soi.t[j]<soi.t[j+1]):
                    Triage.Swap(soi.t,j,j+1)
        return(soi.t) 
#    
    def InserA(soi):
        N=len(soi.t)
        for i in np.arange(0,N-1):
            for j in np.arange(i,-1,-1):
                if (soi.t[j]>soi.t[j+1]):
                    Triage.Swap(soi.t,j,j+1)
        return(soi.t)                 
#  
    def InserD(soi):
        N=len(soi.t)
        for i in np.arange(0,N-1):
            for j in np.arange(i,-1,-1):
                if (soi.t[j]<soi.t[j+1]):
                    Triage.Swap(soi.t,j,j+1)
        return(soi.t)   
#        
    def SelecA(soi):
        N=len(soi.t)
        for i in np.arange(0,N-1):
            bas=i   
            for j in np.arange(i+1,N):
                if (soi.t[j]<soi.t[bas]):
                    bas=j
            Triage.Swap(soi.t,i,bas)
        return(soi.t)    
 #       
    def SelecD(soi):   
        N=len(soi.t)
        for i in np.arange(0,N-1):
            bas=i   
            for j in np.arange(i+1,soi.N):
                if (soi.t[j]>t[bas]):
                    bas=j
            Triage.Swap(soi.t,i,bas)
        return(soi.t)
A voir également:

12 réponses

Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
24 avril 2020 à 21:12
Regarde la définition de la fonction:

def BulleA(soi, t):

elle admet 2 arguments : soi et t

soi, c'est normal, ca représente l'instance créée à partir de la classe Triage, en l'occurrence g :

g=Triage([1,9,10,0,2,17,-7,-2])

mais il y a aussi l'argument t, qu'il faut bien initialiser quand on invoque la fonction

il faudrait faire normalement g.BulleA(t)

Mais le problème vient de la définition de la fonction:

Etant donné que t est initialisé à la création de l'instance g, avec la fonction __init__, t est

maintenant un attribut de g et donc, dans les méthodes de la classe on peut le retrouver avec

soi.t, donc il faut écrire def BulleA(soi): comme d'ailleurs dans la

plupart des autres méthodes de cette classe, et du coup, à l'intérieur de BulleA, t est connu :

N=len(soi.t) fonctionne sans avoir à passer t en argument

Donc le prof a raison, on invoque la fonction avec g.BulleA()
1
Utilisateur anonyme
23 avril 2020 à 21:50
Bonjour

en python, il y a un truc fondamental => l'indentation.

Comme tout site de code qui se respecte, CCM dispose d'un outils qui permet (entre autre) de préserver l'indentation : les balises de code.
Voici un petit tuto sur leur bonne utilisation https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

0
Utilisateur anonyme
23 avril 2020 à 21:59
C'est seulement le copier coller qui a perdue l'identation, mais c'est bien fait
0
Utilisateur anonyme > Utilisateur anonyme
23 avril 2020 à 22:07
Oui c’est le copier coller sans les balises de codes, j’ai vu que tu as édité de le message, mais sans pour autant les ajouter au bon endroit.
Ton code est toujours inexploitable pour celui qui voudrait t’aider
0
Utilisateur anonyme
23 avril 2020 à 22:11
alors comment on fait pour que l'identation soit copier ?
0
Utilisateur anonyme
23 avril 2020 à 22:15
Tu lis et tu appliques correctement le tuto que je t’ai mis en lien
0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
24 avril 2020 à 11:39
Bonjour LaurieVL

Sais tu ce que signifie
BulleA() missing 1 required positional argument: 't'
en français ?

Compare la définition de ta fonction BulleA() : def BulleA(.......
avec l'appel (pas l'appellation ! :-) ) de cette même fonction : g.BulleA()
Il n'y a pas un truc qui t'interpelle ?

Ou alors c'est que tu as copié/collé et que tu ne connais pas bien Python .....
0
Utilisateur anonyme
24 avril 2020 à 13:23
Bonjour Phil, elle a édité son message plusieurs fois sans arriver à positionner correctement les balises de code.
Finalement, c'est Jordane qui l'a fait.
Il est donc bien possible qu'elle soit totalement novice.
0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168 > Utilisateur anonyme
24 avril 2020 à 13:37
Bonjour Whismeril,

Tu as surement raison, car son problème est assez basique

Comme le répondent souvent des intervenants sur ce forum, quand on débute, il faudrait commencer par des choses simples ...
0
Utilisateur anonyme > Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024
24 avril 2020 à 15:52
je suis étudiante en génie ce n'est pas moi qui décide les travaux que je dois faire et c'est mon premier cours de programmation j'essaie de rendre un travail
0
yg_be Messages postés 23487 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 mars 2025 1 570 > Utilisateur anonyme
24 avril 2020 à 16:42
je t'ai proposé un exercice plus facile, qui t'aidera à apprendre et à progresser.
0
yg_be Messages postés 23487 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 mars 2025 1 570 > Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024
24 avril 2020 à 17:00
surprenant aussi que des novices écrivent "mon programme" alors qu'ils ne le comprennent pas.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
24 avril 2020 à 17:47
Vous êtes vraiment des personnes désagréables à critiquer sans raison
Je vois bien que vous n'avais rien d'autre à faire mais SVP aller ailleurs si ce n'est pas pour aider ou garder un minimum de savoir vivre
0
yg_be Messages postés 23487 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 mars 2025 1 570
24 avril 2020 à 18:03
désolé, nous avons en effet sans doute négligé de te communiquer ceci: https://www.commentcamarche.net/infos/25899-demander-de-l-aide-pour-vos-exercices-sur-ccm/
0
Utilisateur anonyme
24 avril 2020 à 18:08
Vous n'aidez pas vous ne faites que dire que je suis novice alors vous riez de ma situation sans aucune aide de votre part je ne comprend pas ce que vous faites ici.

Un forum est fait pour posez des question,
ce que j'ai fait. si vous ne voulez pas répondre c'est bien mais ne répondez pas et c'est tout.

Sinon merci à jordane qui a éditer le texte
0
Utilisateur anonyme
24 avril 2020 à 18:21
Laurie, s'interroger sur le fait que tu sois novice n'est pas une critique.
On a tous débuté un jour, mais pour y arriver il ne faut pas mettre la charrue avant les boeufs.
Dire que pour un novice cet exercice est trop optimiste, là c'est une critique, mais constructive

je suis étudiante en génie ce n'est pas moi qui décide les travaux que je dois faire et c'est mon premier cours de programmation j'essaie de rendre un travail


Ça tant que tu ne le dis pas comment veux tu qu'on le devine. Surtout que le code en question est loin de faire penser à un premier exercice.

Il y a de nombreux flemmards qui viennent sur les forums, sans avoir rien suivi en cours depuis plusieurs semaines/mois et qui espèrent qu'on bonne âme fera le boulot à leur place.

C'est contraire à l'esprit de ce forum, ici on tache de donner des pistes de réflexions à ceux qui essayent.
On y met quelques conditions
  • disposer d'un code facile à lire et indenté
  • répondre aux questions que l'on te pose, car contrairement à toi, nous n'avons pas à disposition certains éléments de contexte qui nous semblent importants pour pouvoir répondre, ton niveau fait partie de ces éléments.
  • avoir l'impression que le demandeur a fourni un travail personnel avant de venir poster.


Si nos questions te vexent, cela peut vouloir dire que tu es susceptible, et bien soit tu le surmontes et peut-être que finalement on pourra t'aider.
Mais cela peut aussi vouloir dire que la situation n'est pas si honnête que tu le dis et que ça t'a piqué au vif.

On veut bien te laisser le bénéfice du doute, mais il faut y mettre du tiens.

yg_be t'as proposé des exercices plus simples, c'est un très bon conseil.
Supposons qu'on te demande de calculer une puissance, alors que tu n'as pas encore appris la multiplication. C'est un peu l'impression que tu donnes. Comprends tu?


0
Utilisateur anonyme
24 avril 2020 à 18:28
Je vous explique je suis de bonne foi

J'ai suivie mes cours mais a cause de l’arrêt des classe peu de formation a été fait à distance et j'ai déjà travaillé sur le triage en python le problème je crois est la partie orienter objet !

Ça c'est nouveau est j'ai ça a faire a remettre dans mon travail et sérieusement, je ne vois pas comment le faire marcher autrement que ce que j’ai fait la. C'est pourquoi je me suis tourné vers le forum, je n'y était pas avant. Si quelqu’un repère l'erreur que j'ai fait ça aurait été utile pour moi, je ne demande pas de le faire a ma place de me diriger si quelqun le veut bien parce la je suis dans le néant avec ce problème
0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
24 avril 2020 à 19:46
Ok LaurieVL,

Dans ma réponse de 11h39, je t'ai quand meme donné une piste …
0
Utilisateur anonyme
24 avril 2020 à 20:02
Étant donné que c'est pour un cours, le professeur nous demande d'obtenir la réponse en tapant exactement :
g.Bulle() , alors c'est censé fonctionner avec cet appellation selon lui

Pour être sur d'avoir compris tu me dit que ce n'est pas la fonction le problème mais bien comment elle est évoqué ?
0
yg_be Messages postés 23487 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 mars 2025 1 570 > Utilisateur anonyme
24 avril 2020 à 21:12
si tu as comme instruction d’appeler g.Bulle(), alors comment dois-tu déclarer Bulle? avec quels paramètres?

avant de faire des exercices complexes orientés objet, commence par des exercices beaucoup plus simples, cela va te permettre de comprendre, d'apprendre, et de progresser. commence par une classe beaucoup plus simple.

cela me semble tout de même très logique: si tu ne vois pas comment faire, commence avec des exercices plus simples.
tu ne progresseras pas si nous te donnons la solution d'un exercice.
0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
1 mai 2020 à 10:14
Bonjour LaurieVL,

tu ne nous a pas dit si ma réponse du 24 avril à 21h12 avait résolu ton problème ….

:-)
0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
4 mai 2020 à 12:03
Bonjour LaurieVL,


Le 24 avril à 18h08, tu as su nous tancer vertement à propos de nos réponses :-)

Maintenant, à toi de faire preuve de savoir-vivre en nous répondant:

As-tu enfin réglé ton problème ?
0
Utilisateur anonyme
Modifié le 4 mai 2020 à 13:34
Oui en fait je l'ai résolue c'était bulle et insert l'erreur je m'en suit rendu compte en regardant select

Désoler mais ton commentaire n'a pas aider
0
Phil_1857 Messages postés 1872 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 168
4 mai 2020 à 13:48
Hé bien voila, il suffisait de le dire ....
0