IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Besoin d'aide table des sommations ( matrices sur python)


Sujet :

Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Besoin d'aide table des sommations ( matrices sur python)
    Bonjour, voici mon problème:
    le dernier programme (table_sommation) ne marche pas et je n'arrive pas à comprendre pourquoi, alors que tous les programmes qui le précèdent marchent.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    def ismatrice(m):
        c=len(m)
        h=len(m[0])
        for i in range(c):
            if type(m[i])!= list or len(m[i])!=h:
                return False
     
        return True and print("matrice avec",c,"colones et",h,"lignes")
     
    #exercice 8
     
    def sousmatrice(m,l1,l2,c1,c2):
        if l1 > len(m[0]) or l2 > len(m[0]) or c1 > len(m) or c2 > len(m):
            return False
        elif l1 < 0 or l2 < 0 or c1 < 0 or c2 < 0:
            return False
        else:
            P=m
            for i in range(len(m)):
                P[i]=m[i][l1:l2]
            return P[c1:c2]
    def calculmatrice(m,l1,l2,c1,c2):
        n=sousmatrice(m,l1,l2,c1,c2)
        S=0
        for i in range(len(n)):
            for j in range(len(n[0])):
                S=S+n[i][j]
        return S
     
     
     
    #complexité de l'algorithme: en (l2-l1)*(c2-c1)
     
    #exercice 9
    def table_sommation(m):
        S=m
        for j in range(len(m)):
            for i in range(len(m[0])):
                S[j][i]=calculmatrice(m,0,i+1,0,j+1)
        return S

    Merci de votre réponse.

  2. #2
    Membre expérimenté Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Points : 1 481
    Points
    1 481
    Par défaut
    Bonjour

    Citation Envoyé par younes789
    alors que tous les programmes qui le précèdent marchent
    Euh, comment dire ... faut le dire vite !

    Bon, déjà, ce ne sont pas des "programmes" mais des fonctions.
    Ta fonction ismatrice retourne False ou None (print ne retourne rien (donc None) et "True and None" vaut None) ...
    On s'attendrait à ce que ce type de fonction retourne un booléen, non ?

    Mais surtout, la ligne "qui tue" : la no 18 !
    A partir de cette ligne, la même matrice (celle qui est passée en paramètre sous le doux nom de "m") s'appelle aussi P et tu la (la seule et même matrice) saucissonnes dans tous les sens. Bref, une fois la fonction terminée, "m" a changé. M'étonnerait que ce soit voulu.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> m = [[0,1,2],[3,4,5]]
    >>> M.sousmatrice(m,0,1,0,1)
    [[0]]
    >>> m
    [[0], [3]]
    Ensuite, qu'une fonction retourne un booléen ou une matrice ... bof. Lever une exception en cas de problème est plus approprié et propre en Python (mais bon, tu n'as peut-être pas encore étudié les exceptions).

    Enfin, question indices, tu as apparemment du mal à choisir entre les habitudes en math et en python : on commence à 0 ou 1 ? Il y a un joyeux mélange dans tes tests (si on a C colonnes, un indice correct est dans [0;n-1] (math), pas dans [0;n]). Il serait bon aussi de préciser par un (tout) petit commentaire ce que sont supposées faire tes fonctions et indiquer si le deuxième indice (l2 et c2) est à exclure (style range(n)) ou pas.

    Ne te décourage pas mais il y a pas mal de choses à revoir !

    ps : ah oui, aussi : organiser les matrices d'abord en colonnes (permier indice) puis en lignes (second indice) n'est pas la façon de faire la plus "classique". C'est un choix ou une contrainte ?
    "La simplicité ne précède pas la complexité, elle la suit." - Alan J. Perlis
    DVP ? Pensez aux cours et tutos, ainsi qu'à la FAQ !

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    je dois avouer que je ne suis pas vraiment un programmeur, j'ai appris le langage "python" il y'a une semaine, donc du moment que mon "programme" marche très bien i.e: je l'implémente et je l'essaye sur un exemple concret et que ça marche, c'est tout ce qui compte !
    Je te remercie déjà pour ta réponse, mais ça ne résout pas vraiment mon problème!
    et pour la forme de la matrice, c'est une contrainte !

  4. #4
    Membre expérimenté Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Points : 1 481
    Points
    1 481
    Par défaut
    Citation Envoyé par younes789
    ... mais ça ne résout pas vraiment mon problème!
    J'ai montré dans mon précédent post que ta fonction sousmatrice ne fonctionnait pas correctement : elle modifie la matrice sur laquelle tu travailles.

    Bref, ta fonction table_sommation, qui s'appuye sur elle, ne marchera jamais si tu refuses de corriger tes premières fonctions. C'est toi qui vois.
    "La simplicité ne précède pas la complexité, elle la suit." - Alan J. Perlis
    DVP ? Pensez aux cours et tutos, ainsi qu'à la FAQ !

Discussions similaires

  1. Besoin d'aide pour integrer un design sur du PHP
    Par cebri dans le forum Webdesign & Ergonomie
    Réponses: 5
    Dernier message: 01/12/2008, 08h33
  2. [Besoin d'aide] Récupéré des données xml dans un champs dynamisque
    Par Endeo dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 27/08/2008, 16h22
  3. Besoin d'aide pour bloquer un nombre sur une TextBox
    Par Torrent74 dans le forum Flash
    Réponses: 2
    Dernier message: 24/10/2007, 20h14
  4. Besoin d'aide pour des jointures de tables
    Par supersmoos dans le forum Requêtes
    Réponses: 4
    Dernier message: 14/12/2006, 15h38
  5. besoin d'aide pour des algos
    Par mathieu77 dans le forum Algorithmes et structures de données
    Réponses: 23
    Dernier message: 08/11/2005, 18h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo