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 :

Comment faire la somme sous python? [Python 3.X]


Sujet :

Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Octobre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Architecte de base de données

    Informations forums :
    Inscription : Octobre 2018
    Messages : 9
    Points : 8
    Points
    8
    Par défaut Comment faire la somme sous python?
    Bonjour tout le monde,
    j'ai un gros soucis j'arrive pas à faire la somme de ma liste. Je l'ai convertit en liste mais je m'aperçois que les items de ma liste restent des str. J'ai essayé de parcourir la liste pour prendre chaque item et l'additionner au suivant mais rien à faire j'arrive pas simplement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my_liste =['145','25','-','3554','1111','0','0'....]
    .

  2. #2
    Membre averti Avatar de zancrows
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2016
    Messages
    155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2016
    Messages : 155
    Points : 346
    Points
    346
    Par défaut
    bonjour,

    essaye cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sum([int(i) for i in my_liste])
    mais tu risques d'avoir un problème avec le '-' dans ta liste

    edit: merci pour la correction

  3. #3
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 986
    Points
    30 986
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par zancrows Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sum([int(i) for i in my_liste]
    Attention, tu oublies la parenthèse fermante. Et les crochets ne sont pas nécessaires => sum(int(i) for i in my_liste)
    Citation Envoyé par zancrows Voir le message
    mais tu risques d'avoir un problème avec le '-' dans ta liste
    Exact. Obligé de passer par un filtre.
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    sum(filtre(i) for i in my_liste)
    (avec "filtre" faisant un try/except sur int(x))...

    Ou alors on reste classique: on parcours, on vérifie et on additionne...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Octobre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Architecte de base de données

    Informations forums :
    Inscription : Octobre 2018
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Bonjour,
    merci pour votre aide, je vais essayer et je vous tiens au courant.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Octobre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Architecte de base de données

    Informations forums :
    Inscription : Octobre 2018
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    bonjour,
    j'ai pas eu gain de cause avec votre aide mais je me suis rendu compte qu'il y'a du vide entre dans mes items c'est à dire ma liste de départ était sa:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my_liste =['145','25','-','3554','1111','0','0'....]
    Et quand j'ai appliqué la somme j'ai eu comme sa :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    builtins.ValueError: invalid literal for int() with base 10: ''
    donc j'ai conclu que j’avais du vide et essayant de remplacer le vide par des zéros j'ai eu sa:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my_liste =['10405','205','-','3050504','1010101','00','00'....]

  6. #6
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 986
    Points
    30 986
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par blackpirates Voir le message
    bonjour,
    Sympa mais une fois suffit. Tout comme dans la vraie vie quand tu discutes. Tu ne dis pas "bonjour" à chaque nouvelle phrase quand-même...

    Citation Envoyé par blackpirates Voir le message
    mais je me suis rendu compte qu'il y'a du vide entre dans mes items
    "entre" ou "dans" ? Ce n'est pas pour rien si les mots de la langue française sont si nombreux et si le français était la langue de référence en Europe jusqu'au XVIII° siècle: ils permettent de décrire une situation avec exactitude et deux expressions même identiques phonétiquement ne signifient pas la même chose selon la façon dont on les écrit (ex "a essayé" et "à essayer").
    Donc un vide entre deux items ce sera ça: ['145', '', '25']. Un vide dans les items ce sera cela: ['1 4 5', '2 5'].

    Citation Envoyé par blackpirates Voir le message
    Et quand j'ai appliqué la somme j'ai eu comme sa :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    builtins.ValueError: invalid literal for int() with base 10: ''
    Assez normal. int("xxx") ne peut s'appliquer que si "xxx" ne contient que du chiffre. C'est ce que zancrows prédisait déjà avec le "-".

    Citation Envoyé par blackpirates Voir le message
    donc j'ai conclu que j’avais du vide et essayant de remplacer le vide par des zéros j'ai eu sa:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my_liste =['10405','205','-','3050504','1010101','00','00'....]
    Ok. Et donc ? C'est toi qui dirige ton programme, ce n'est pas ton programme qui te dirige. A toi donc de décider comment tu traites un item valant par exemple "1 4 5" parce qu'on ne pourra pas le décider à ta place.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Octobre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Architecte de base de données

    Informations forums :
    Inscription : Octobre 2018
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Bonjour,

    Pour le 'entre' et le 'dans' c'est une inattention de ma part, je te remercie je ferai attention la prochaine fois.
    J’espère que python fait partie de tes centres d’intérêt et si c'est le cas, sache que j'ai pu résoudre mon problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sum[int(x) for x in my_liste if x !=""]
    Merci

  8. #8
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 986
    Points
    30 986
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par blackpirates Voir le message
    Bonjour,
    Donc (bis): Sympa mais une fois suffit. Tout comme dans la vraie vie quand tu discutes. Tu ne dis pas "bonjour" à chaque nouvelle phrase quand-même...

    Citation Envoyé par blackpirates Voir le message
    J’espère que python fait partie de tes centres d’intérêt
    Non, absolument pas. C'est pour ça que je lis les topics et essaye de répondre au mieux...

    Citation Envoyé par blackpirates Voir le message
    et si c'est le cas, sache que j'ai pu résoudre mon problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sum[int(x) for x in my_liste if x !=""]
    Mouais. Donc déjà la syntaxe exacte c'est sum(iterable) et non sum[iterable]. Ensuite ça ne règle pas vraiment le cas du "-" (à moins qu'il ait disparu) et surtout ça n'explique pas comment, en remplaçant les espaces par "0", ça a transformé "145" en "10405"...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Octobre 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Architecte de base de données

    Informations forums :
    Inscription : Octobre 2018
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sum(int(x) for x in my_liste if (x !="") and (x !="-"))

  10. #10
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 986
    Points
    30 986
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par blackpirates Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sum(int(x) for x in my_liste if (x !="") and (x !="-"))
    sum(int(x) for x in my_liste if x not in ("", "-")). Toutefois ça rejoint mon premier post sum(filtre(x) for x in my_liste) avec filtre() permettant de gérer des cas plus complexes éventuels.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

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

Discussions similaires

  1. [iReport] Comment faire une ligne "sous-détails"
    Par cho7 dans le forum iReport
    Réponses: 1
    Dernier message: 23/06/2006, 15h32
  2. Comment faire référence à un sous sous dossier ?
    Par Angeldu74 dans le forum Langage
    Réponses: 3
    Dernier message: 06/04/2006, 23h22
  3. Comment faire la somme d'un sous état ?
    Par Fredri dans le forum IHM
    Réponses: 1
    Dernier message: 12/12/2005, 13h18
  4. Probleme pour faire une somme sous Excel
    Par Nicolas92 dans le forum Excel
    Réponses: 5
    Dernier message: 02/12/2005, 11h38

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