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 :

Boucle for en décimal


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2007
    Messages : 40
    Par défaut Boucle for en décimal
    Bonjour,

    Je recherche à utiliser la fonction suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for X in range (0, 6.18, 0.01)
    mais bien sur le compilateur n'accepte pas car il ne s'agit pas d'entier.

    Existe-t-il une fonction permettant de ce déplacer dans les décimaux ??

    Merci pour vos réponses.

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 222
    Par défaut
    Bonjour,
    Tu peux utiliser arange du module numpy:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    import numpy as np
     
    for a in np.arange(0, 6.18, 0.01):
    	print a
    Si ça t'ennuies d'utiliser numpy tu peux créer ta propre fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    def drange(start, stop, step):
    	r = start
    	while r < stop-step :
    		 yield r
    		 r += step
     
     
    for a in drange(0, 6.18, 0.01):
    	print a

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Par défaut
    Pas mal la fonction génératrice, mais il faut while r < stop : au lieu de while r < stop-step : , je pense.


    Soit dit en passant, il est impératif de bien mettre
    while r < stop : et non pas while r != stop :
    car, comme on l'a vu récemment
    http://www.developpez.net/forums/d888753/autres-langages/python-zope/general-python/probleme-0-a/#post5051278
    le cumul d'une petite différence d'approximation d'un nombre décimal fait que pour certaines valeurs de stop, c'est à dire certains nombres de tours d'itération, r et stop sont en réalité légèrement différents au moment où ils sont censés être égaux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    def drange(start, stop, step):
        r = start
        while r != stop+5:
             yield r
             r += step
             if r>0.10:  break
    stop = 0.06  
    for a in drange(0, stop, 0.01):
     print 'a =',a,'  a-'+str(stop)+' =',a-stop
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    a = 0   a-0.06 = -0.06
    a = 0.01   a-0.06 = -0.05
    a = 0.02   a-0.06 = -0.04
    a = 0.03   a-0.06 = -0.03
    a = 0.04   a-0.06 = -0.02
    a = 0.05   a-0.06 = -0.01
    a = 0.06   a-0.06 = 6.93889390391e-18
    a = 0.07   a-0.06 = 0.01
    a = 0.08   a-0.06 = 0.02
    a = 0.09   a-0.06 = 0.03
    a = 0.1   a-0.06 = 0.04

    Mais pour stop=0.7, c'est bon:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    a = 0   a-0.07 = -0.07
    a = 0.01   a-0.07 = -0.06
    a = 0.02   a-0.07 = -0.05
    a = 0.03   a-0.07 = -0.04
    a = 0.04   a-0.07 = -0.03
    a = 0.05   a-0.07 = -0.02
    a = 0.06   a-0.07 = -0.01
    a = 0.07   a-0.07 = 0.0
    a = 0.08   a-0.07 = 0.01
    a = 0.09   a-0.07 = 0.02
    a = 0.1   a-0.07 = 0.03

  4. #4
    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
    et ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for X in range (0, 618, 1):
        X = X/100.
    ...non ?

  5. #5
    Membre Expert
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    941
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2007
    Messages : 941
    Par défaut
    OT
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    >>> Poster
    <class '__main__.Poster'>
    >>> eyquem = Poster()
    >>> heyquem = Poster()
    >>> id(eyquem)
    7123161
    >>> id(heyquem)
    6325706
    >>> heyquem is eyquem
    True
    >>> arf
    Traceback (most recent call last):
      File "<interactive input>", line 1, in <module>
    NameError: name 'arf' is not defined

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2007
    Messages : 40
    Par défaut
    Merci beaucoup c'est parfait !

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

Discussions similaires

  1. Boucle for dans un script cmd
    Par nicolas.ganache dans le forum Développement
    Réponses: 4
    Dernier message: 19/07/2004, 16h07
  2. Réponses: 3
    Dernier message: 06/07/2004, 10h21
  3. [Debutant] Batch et Boucle for
    Par ludovic.fernandez dans le forum Scripts/Batch
    Réponses: 8
    Dernier message: 06/05/2004, 19h21
  4. [Swing][boucles] for, do, if .....comment faire simple?
    Par chastel dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 02/05/2004, 22h49
  5. [langage] boucle "for" modification du pas
    Par K-ZimiR dans le forum Langage
    Réponses: 4
    Dernier message: 29/04/2004, 11h54

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