Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

Problème pour faire fonctionner une boucle (python)



  1. #1
    fodiltreize

    Problème pour faire fonctionner une boucle (python)


    ------

    Bonjour a tous

    J'écris ce message d'alerte car je ne trouves vraiment plus de solution, ma boucle " voulez vous continuez" ne marche pas du tout, en faite c'est une boucle inflini qui relance mon programme encore et encore malgret que la réponse soit 'non', voici mon script :
    Code:
    import tdexpeyes as eyes
    import matplotlib.pyplot as plt 
    import numpy as np
    
    try_again=False
    while not try_again:
        p=eyes.open()
        p.set_upv(0)
        p.set_sqr1(15)
        p.enable_wait_rising(0)
    
    #On demande la frequence d'echantillonage
    
    
        
    
        frequence_ech= raw_input(" Quel est la frequence de l'echantillon ? ")
    
    #On parametre la stimulation
    
        print ' NOUS PASSONS MAINTENANT A LA FREQUENCE !!! ' 
        stim_correct = False
    
        while not stim_correct:
    
                debut= raw_input ( " Indiquez le debut de votre stimulation : ")
                fin= raw_input(" Indiquez la fin de votre stimulation : ")
                le_pas= raw_input(" Indiquez le pas de votre stimulation : " )
    
                try:
                        debut = float(debut)
                        fin = float(fin)
                        le_pas = float(le_pas)
                        reponse_stimulation = [debut,fin,le_pas]
                        stim_correct = True
                except ValueError:
                        print ' Entrez un nombre'
    
        print reponse_stimulation
    
        space_reponse = np.linspace(reponse_stimulation[0],reponse_stimulation[1],int(reponse_stimulation[1]/reponse_stimulation[2]))
    
        print space_reponse
        
    #On demande le gain
    
        print ' NOUS PASSONS MAINTENANT AU GAIN ' 
    
        gain = False 
    
        while not gain:
                gain = raw_input(" Indiquez la valeur du gain : " ) 
    	
                try:
                        gain=float(gain)
                        gain= True
                except ValueError:
                        print " Entrez un nombre"
        print gain
    
    
    #La boucle de stimulation avec les listes que nous allons creer 
    
        for stim in range (len(space_reponse)):
                p.set_upv(space_reponse[stim])
                t_zeroo= []		#liste uno
                v_zeroo= []		#liste deux
                t_uno= []		#liste trois
                v_uno= []		#liste quatre
    
                for triels in range ( 20 ):
                        t_zero , v_zero , t_un , v_un = p.capture01(150,10)
                        t_zeroo.append(t_zero)
                        v_zeroo.append(v_zero)
                        t_uno.append(t_un)
                        v_uno.append(v_un)
    	
                versus_un = np.mean(t_zeroo,axis=0)
                versus_uno = np.mean(t_uno,axis=0)
                versus_deux = np.mean(v_zeroo,axis=0)
                versus_dos = np.mean(v_uno, axis=0)
    	
                plt.subplot(211)
                plt.plot( versus_un, versus_deux, "b", linewidth=3)
                plt.xlabel('temps en ms')
                plt.ylabel('potentiel en volts')
                plt.axis([0,max(versus_un),min(versus_deux),max(versus_deux)])
    	
                plt.subplot(212)
                plt.plot(versus_uno, versus_dos, "b", linewidth=3)
                plt.xlabel('temps en ms')
                plt.ylabel('potentiel en volts')
                plt.axis([0,max(versus_uno),min(versus_dos),max(versus_dos)])
    	
        plt.show()
    
        reponse=raw_input("Voulez vous continuez ?")
        if reponse is ('oui','o'):
            try_again=True

    J'attend votre aide avec une grande impatience, Merci !

    -----
    Dernière modification par Jack ; 21/04/2017 à 22h20. Motif: Ajout balises code

  2. Publicité
  3. #2
    Ikhar84
    Animateur Informatique

    Re : Problème pour faire fonctionner une boucle (python)

    Bonsoir,
    Sans l'indentation du code il sera difficile pour qui que ce soit de vous aider !
    Postez le code entre les balises
    Code:
     et
    , ou utilisez le bouton # (je crois...).

    Le code sera plus lisible et l'indentation permettra de localiser l'erreur.

    En attendant verifiez qu'il n'y a pas un mélange d'espace et de tabulation en debut de chaque ligne.

  4. #3
    Jack
    Modérateur

    Re : Problème pour faire fonctionner une boucle (python)

    Merci de bien lire les consignes du forum info avant de poster. L'indentation est indispensable, surtout en python
    Dernière modification par JPL ; 21/04/2017 à 23h01. Motif: Correction du lien

  5. #4
    fodiltreize

    Re : Problème pour faire fonctionner une boucle (python)

    Merci beaucoup pour votre correction et je vous pris de bien vouloir m'excuser de ne pas m'être informé sur les consignes du forum info

  6. A voir en vidéo sur Futura
  7. #5
    LeMulet

    Re : Problème pour faire fonctionner une boucle (python)

    Code:
        reponse=raw_input("Voulez vous continuez ?")
        if reponse is ('oui','o'):
            try_again=True
    Je ne connais pas Python.
    Néanmoins, déjà, pour tester si le problème vient de là, il suffit de supprimer cette partie de code.

    Ensuite, d'après ce que je viens de voir, l'opérateur "is" n'est pas fait pour tester les valeurs mais l'identité des variables.
    (Comprenne qui pourra)
    Il vaut mieux employer "==" que "is"

    Et pensez à tester aussi les majuscules, il est aussi possible de taper OUI, O, on ne sait jamais.
    Ou alors mettre la chaine en majuscule avant de tester (c'est une méthode plus solide)

    Ce qui serait bien aussi, c'est d'indiquer à l'utilisateur ce qu'il peut taper (genre il tape, "Oui je veux arreter" )
    Bonjour, et Merci.

  8. #6
    invite73192618

    Re : Problème pour faire fonctionner une boucle (python)

    Code:
        if reponse is ('oui','o'):
            try_again=True
    Il me semble que c'est l'inverse

    Code:
        if not(reponse == 'oui' or reponse == 'o'):
            try_again=True

  9. Publicité
  10. #7
    pm42

    Re : Problème pour faire fonctionner une boucle (python)

    En fait,
    Code:
     reponse is 'o'
    ou
    Code:
     reponse is ('o')
    renvoie True si on a mis reponse à 'o'.
    Mais
    Code:
     reponse is ('o', 'oui')
    renvoie False ce qui est normal : on compare reponse à un tuple...

    Code:
     reponse in ('o', 'oui')
    est probablement la solution concise et efficace.
    On peut aussi le faire avec une liste plutôt qu'un tuple :
    Code:
     reponse in ['o', 'oui']

Discussions similaires

  1. Réponses: 12
    Dernier message: 27/02/2014, 19h34
  2. Une pile pour faire fonctionner une bande de led ?
    Par mtenneguin dans le forum Électronique
    Réponses: 7
    Dernier message: 15/09/2013, 21h33
  3. Réponses: 6
    Dernier message: 25/03/2010, 17h53
  4. Réponses: 7
    Dernier message: 15/10/2008, 18h30
  5. Besoin d'aide pour faire fonctionner un néon
    Par fabrygas dans le forum Électronique
    Réponses: 8
    Dernier message: 21/12/2005, 18h47