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 :

Division de int


Sujet :

Python

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 69
    Points : 25
    Points
    25
    Par défaut Division de int
    Re bonjour,

    alors j'ai un problème de division toute bête...

    j'ai deux variables l et g.
    l est le résultat du comptage d'un nombre de caractères
    g est le résultat d'une addition effectuée moi même dasn le code comme ceci: g=l+..+..+..

    je souhaite ensuite diviser l par g.
    pour cela, j'ai mis une condition:
    mais ça ne marche pas.
    il me renvoie tout le temps zero.

    j'ai vérifier le type de l et g en tappant:
    il me renvoie: int

    j'ai testé en mettant:
    Rien à y faire, il me renvoie toujours 0.


    Ou est le problème?

    Je vous remercie.

    EDIT : petite précision qui aura surement son importance :
    j'ai regardé tous mes résultats et quand les valeurs de l et g sont identiques, il me renvoie bien 1.
    exemple si l=15 et g=15, il me renvoie lp=1.
    Mais pour toutes les autres valeurs de l et g différentes, j'ai toujours 0.

  2. #2
    Membre expérimenté Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Points : 1 728
    Points
    1 728
    Par défaut
    Une division de int renvoie la partie entière de la division:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> 40/15
    2
    >>> 40%15 # le reste
    10
    >>> 40./15 # cela devient une division de float grace au point
    2.6666666666666665
    Pour faire plus pythonique, remplacepar.

    En utilisant les exceptions:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    try:
        lp = l/g
    except ZeroDivisionError:
        print "impossible de diviser par Zero ...."
    Je ne peux que te conseiller de t'atteler à un bon tutoriel
    "Etre conscient de la difficulté permet de l'éviter.."
    Lao-Tseu.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 69
    Points : 25
    Points
    25
    Par défaut
    Ca ne marche pas

  4. #4
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 470
    Points : 9 264
    Points
    9 264
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Si tu veux que la division entre 2 nb entiers soit décimale, ajoute comme 1ère instruction:

    from __future__ import division

    Ceci juste après les éventuelles 2 premières lignes habituelles (shebang et coding).

    Après cela, la division entière reste possible avec //

    Tyrtamos
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  5. #5
    Membre expérimenté Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Points : 1 728
    Points
    1 728
    Par défaut
    Tu divises un nombre par un nombre plus grand, c'est ça?
    Donc tu auras toujours 0 si ce sont des int, non?
    Pour effectuer une division de float:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    >>> 40/50
    0
    >>> 40./50
    0.80000000000000004
    >>> float(40)/50
    0.80000000000000004
    >>> 1.*40/50
    0.80000000000000004
    Si tu veux de l'aide, il faudrait un peu plus d'information que 'ça marche pas'.
    Qu'as-tu essayé?
    As-tu des exemples de valeurs qui posent problème?
    "Etre conscient de la difficulté permet de l'éviter.."
    Lao-Tseu.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 69
    Points : 25
    Points
    25
    Par défaut
    En fait, j'ai testé beaucoup de choses, c'est-à-dire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    float(lp)=float(l)/float(g)
    ou
    puis
    avec mon import __future__ et l//g, j'ai testé et ça me mettait toujours 0.

    J'ai également fait le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    try:
       .....
    except:
       .....
    ça mettait toujours 0.

    Puis, lorsque tu as écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    >>> 40/50
    0
    >>> 40./50
    0.80000000000000004
    je me suis dit, je vasi essayé de mettre seulement:
    et ça marché !!

    Je vous remercie tous !

  7. #7
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par Victoria007 Voir le message
    puis
    avec mon import __future__ et l//g, j'ai testé et ça me mettait toujours 0.
    C'est normal, l'opération associée à l'opérateur // sur deux entiers reste une division entière. Si ce n'est pas ce que tu veux, tu dois utiliser l'opérateur /. On a donc:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    from __future__ import division
     
    print 2 / 3    # affiche 0.666666666667
    print 2 // 3   # affiche 0
    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

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

Discussions similaires

  1. [.COM] Réserver de la RAM fct 48h int 21h
    Par bulerias dans le forum x86 16-bits
    Réponses: 5
    Dernier message: 06/12/2010, 14h33
  2. [C#] Diviser une String par un Int
    Par ArHacKnIdE dans le forum Windows Forms
    Réponses: 8
    Dernier message: 09/03/2006, 15h48
  3. Réponses: 1
    Dernier message: 07/02/2006, 12h52
  4. [Dev c++ 4] implicite declaration of function "int kbhi
    Par Torpedox dans le forum Dev-C++
    Réponses: 5
    Dernier message: 01/01/2003, 13h37
  5. Les INT en mode protégé
    Par le mage tophinus dans le forum x86 16-bits
    Réponses: 8
    Dernier message: 05/12/2002, 16h13

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