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 :

Problème dans mon code


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Décembre 2010
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 11
    Par défaut Problème dans mon code
    Bonjour à tous,
    je suis nouveau dans le forum et j'espère être sur le bon sous-forum de python pour poser ma question.

    Alors je débute dans la programmation et ce pour mes études. J'ai un projet à rendre bientôt et parfois j'ai du mal à comprendre pourquoi le programme que je crée ne marche pas...

    J'ai un problème dans ma première partie:

    Je dois créer une matrice à partir de liste de liste (obligé). Quand l'utilisateur donne sa commande et les paramètre qu'il choisit, il faut que ça donne la matrice correspondante avec 1 ligne en plus, qui doit contenir 1,1 à la fin et 1 colonne=0 en plus dans chaque ligne .

    Pour ce faire je commence par une fonction qui donnera une liste de travail (plein de 0).

    Avec une seconde fonction, j'essaye de transformer chaque élément par les paramètres correspondant sans modifier la dernière colonne de chaque ligne, ainsi que la dernière ligne.

    (j'espère que c'est plus ou moins clair mais un exemple vaut mieux)

    Voila ce que ça donne pour le moment:

    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
    argv=['test.py',100,2,3,1,2,3,4,5,6] #exemple variable crée avec la commande, les éléments de la matrices 2x3 sont1,2,3,4,5,6
     
    nblignes=argv[2]
    nbcolonnes=argv[3]
    def matrice0(nblignes,nbcolonnes):
        M=[]
        for i in range (nblignes): 
           M.append([0]*(nbcolonnes+1))
        M.append([0]*(nbcolonnes-1)+[1,1])
        return M
     
    def print_matrice(argv):
        M=matrice0(nblignes,nbcolonnes)
        n=len(M)
        m=len(M[0])
        ligne_ajoutee=len(M[-1])
        for i in range(n,ligne_ajoutee):
            for j in range (m):
                if(j<-1):
                    M[i][j]=range(argv[4],argv[0])
                    print M[i][j],
        print
    print print_matrice(argv)
    Bien sur, ça ne marche pas comme je le souhaiterai

    si qq un peut m'éclairer je serai très reconnaissant.

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 068
    Par défaut
    salut ...
    1- la matrice est définie dans la routine qui est sensée l'affichée ...
    2-il y a un double print (on apelle ça comme ça mais ça veut rien dire) càd que tu print un retour de fonction qui print des trucs mais qui retourne None.
    3-bien que ton raisonnement soit juste ... cette façon de faire ça craint. Dans argv=['test.py',100,2,3,1,2,3,4,5,6], tu possèdes déjà tout ce qu'il te faut. La matrice est quasiment déjà faite, suffit de bricoler argv

    voilà ce qu'on peut faire avec une liste compréhension. Comme c'est pour un devoir je te donne volontairement un truc tordu( faut pas prendre les profs pour des imbéciles ) mais tu devrais en comprendre le principe ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    argv=['test.py',100,2,3,1,2,3,4,5,6]
    nblignes=argv[2]
    print [argv[i:i+nblignes]+[0] for i in range(4,len(argv),nblignes)]+[[0]*(nblignes-1)+[1,1]]

  3. #3
    Membre habitué
    Inscrit en
    Décembre 2010
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 11
    Par défaut
    merci beaucoup déjà

    j'ai demandé à un informaticien et le truc qu'il nous demande est complètement tordu alors je fais comme je peux

    je vais réfléchir sur le code que tu me proposes.

  4. #4
    Membre habitué
    Inscrit en
    Décembre 2010
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 11
    Par défaut
    j'ai réfléchis et je suis presque au résultat attendu. Mais je cale
    je dois essayer d'avoir en reprenant l'exemple :

    [[1,2,3,0],[4,5,6,0],[0,0,1,1]]

    mais j'obtiens ceci :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    argv=['test',100,2,3,1,2,3,4,5,6]
    nblignes=argv[2]
    nbcolonnes=argv[3]
     
    M=[argv[4:len(argv)+1]+[0] for i in range (nblignes)]+[[0]*(nbcolonnes-1)+[1,1]]#variable M donne la matrice entrée par l'utilisateur
     
    print M
     
    [[1, 2, 3, 4, 5, 6, 0], [1, 2, 3, 4, 5, 6, 0], [0, 0, 1, 1]]
    j'ai essayé de jouer un peu avec le range (nblignes) en faisant varier le start,stop,step mais jsq à présent ça fait multiplier [1, 2, 3, 4, 5, 6, 0]

    une astuce ?

  5. #5
    Membre Expert
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 068
    Par défaut
    dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    M=[argv[4:len(argv)+1]+[0] for i in range (nblignes)]+[[0]*(nbcolonnes-1)+[1,1]]
    [argv[4:len(argv)+1]+[0] est fixe, il ne varie jamais, à quoi te sert la variable i ?

  6. #6
    Membre habitué
    Inscrit en
    Décembre 2010
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 11
    Par défaut
    Merci

    j'ai réussi grâce à tes mises sur la voie(et après moult cassages de tête) à faire ma matrice le i avait une grosse importance alors j'ai fait une fonction

    et ça marche

    bonne soirée, me reste plus qu'a faire le reste du projet et c'est chaud

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème dans mon code
    Par mrbou dans le forum ASP
    Réponses: 15
    Dernier message: 01/10/2008, 14h38
  2. Réponses: 3
    Dernier message: 15/03/2008, 15h15
  3. Problème dans mon code
    Par curro dans le forum Débuter
    Réponses: 14
    Dernier message: 29/08/2007, 01h46
  4. Réponses: 2
    Dernier message: 03/05/2007, 09h00
  5. Réponses: 13
    Dernier message: 17/10/2006, 15h35

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