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 :

incrémentation dans la liste


Sujet :

Python

  1. #1
    Membre confirmé
    Homme Profil pro
    Webdesigner
    Inscrit en
    Avril 2005
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Avril 2005
    Messages : 120
    Par défaut incrémentation dans la liste
    Bonjour ,
    je suis débutant en python
    voici mon code , j'arrive pas incrémenter dans Tliste = [] afin de créer la somme de Tliste

    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
     
     
        def acheter(self):
            encoreproduit = True
            while (encoreproduit):
                id = input("veuillez saisir un id : ")
                if (id == ""):
                    encoreproduit = False
                    break;
                id = int(id)
                f = open(facture.nomproduit, "r")
                liste = f.readlines()
                f.close()
                Tliste = []
                for i in range(1, len(liste)):
                    listechamps = liste[i].split("  ")
     
                    while(int(listechamps[0]) == id):
                        f1 = open(self.nomfacture, "a")
                        liignefacture = "\n" + "  ".join(listechamps[0:3]) + "\n"
                        Tliste.append(listechamps[2])
                        print("produit : ", liignefacture)
                        f1.write(liignefacture)
                        f1.close()
                        newstock = int(listechamps[-1]) - 1
                        listechamps[-1] = str(newstock)
                        nouvelleligne = "  ".join(listechamps) + "\n"
                        liste[i] = nouvelleligne
                        break
     
                print(Tliste)
                f = open(facture.nomproduit, "w")
                for element in liste:
                    f.write(element)
                f.close()
    et Merci

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 706
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 706
    Par défaut
    Salut,

    Incémenter l'élément d'une liste se fait assez simplement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> L = [1, 2, 3]
    >>> L[1] += 1
    >>> L
    [1, 3, 3]
    >>>
    Pour ce qui est de:
    Citation Envoyé par NapsterVB Voir le message
    j'arrive pas incrémenter dans Tliste = [] afin de créer la somme de Tliste
    à défaut de maîtriser le langage technique, il n'y a pas grand chose dans votre code qui illustre ce que vous cherchez à faire.
    Et ne sachant pas ce que vous voulez faire, difficile de vous aider.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre confirmé
    Homme Profil pro
    Webdesigner
    Inscrit en
    Avril 2005
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Avril 2005
    Messages : 120
    Par défaut
    dans le fond y a une liste avec plusieurs colonnes et plusieurs ligne
    je parcours la ligne et prends la dernière colonne qui liste : listechamps[2]pour chaque ligne ajoute dans : liignefacture = "\n" + " ".join(listechamps[0:3]) + "\n" ,
    je prends la dernière colonne qui est listechamps[2] et je l’insère dans la liste Tliste[] et la fin je fais sum(Tliste).

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 706
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 706
    Par défaut
    Salut,

    Citation Envoyé par NapsterVB Voir le message
    je prend la dernière colonne qui est listechamps[2] et je l’insère dans la liste Tliste[] et la fin je fais sum(Tliste)
    La dernière instruction qui utilise TListe est le "print" à la ligne 31 du code que vous avez posté: pas de "sum".

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre éprouvé Avatar de olivier1969
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Novembre 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 153
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for i in range(1, len(liste)):                listechamps = liste[i].split("  ")
     
                    while(int(listechamps[0]) == id):
                        f1 = open(self.nomfacture, "a")
                        liignefacture = "\n" + "  ".join(listechamps[0:3]) + "\n"
                        Tliste.append(listechamps[2])
                        print("produit : ", liignefacture)
                        f1.write(liignefacture)                                f1.close()

    Tu ouvres et tu fermes ton fichier 'f1' combien de fois ? Du devrais le faire en dehors de la boucle , à mon avis.

    Et il doit te manquer un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Total += listechamps[2]
    (vérifier le type de variable) quelque part !! Comme l'a signalé wiztricks

  6. #6
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 306
    Par défaut
    Salut,

    Pour chaque nouveau produit tu recrées Tlist vide, c'est donc normal qu'elle ne contienne que le dernier produit choisit.

    Autrement dit Tlist = [] n'est pas au bon endroit.

  7. #7
    Membre confirmé
    Homme Profil pro
    Webdesigner
    Inscrit en
    Avril 2005
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Avril 2005
    Messages : 120
    Par défaut
    Merci à vous tous, vous êtes géniales.
    comment je pourrais devenir comme vous ?
    le problèmes est résolu.

    Citation Envoyé par olivier1969 Voir le message
    Oui, dans cette boucle il y a le Break à la fin !
    À votre avis quelle la meilleur solution ?

  8. #8
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 706
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 706
    Par défaut
    Citation Envoyé par NapsterVB Voir le message
    Oui , dans cette boucle ya le Break a la fin!
    a votre avis quelle la meilleur solution ?
    Si vous écrivez:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for i in range(1, len(liste)):              
          listechamps = liste[i].split("  ")
          while(int(listechamps[0]) == id):
                 ....
    vous devriez savoir vous relire et comprendre qu'écrire une boucle tant que (int(listechamps[0]) == id) suppose que listechamps sera modifié à l'intérieur de la boucle et non à l'extérieur.

    Et si vous n'arrivez pas à relire le code que vous avez écrit, ben, il faut prendre le temps d'apprendre à programmer.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #9
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par défaut
    Citation Envoyé par NapsterVB Voir le message
    Merci a vous tous , vous êtes géniales.
    comment je pourrais devenir comme vous ?
    le problèmes est résolu.
    3 fautes dans la signature : tu pourrais faire qqs efforts...

  10. #10
    Membre confirmé
    Homme Profil pro
    Webdesigner
    Inscrit en
    Avril 2005
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Avril 2005
    Messages : 120
    Par défaut
    Citation Envoyé par marco056 Voir le message
    3 fautes dans la signature : tu pourrais faire qqs efforts...
    j'ai changé la signature .

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

Discussions similaires

  1. [Débutant] Incrémentation dans List<T>
    Par sharwyn dans le forum C#
    Réponses: 7
    Dernier message: 23/09/2011, 19h36
  2. [LG]suppression dans une liste chainée
    Par mister_dsg dans le forum Langage
    Réponses: 9
    Dernier message: 16/12/2003, 21h20
  3. [langage] Comment rajouter des champs dans une liste
    Par toto_titi dans le forum Langage
    Réponses: 4
    Dernier message: 28/08/2003, 14h09
  4. Réponses: 2
    Dernier message: 17/08/2003, 20h07
  5. Réponses: 4
    Dernier message: 24/04/2003, 22h28

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