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 :

Python 3.9 Fonction "def" et boucle for : Variable reset à chaque appel ?


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2022
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2022
    Messages : 8
    Par défaut Python 3.9 Fonction "def" et boucle for : Variable reset à chaque appel ?
    Bonjour et bonne année !

    Voila j'ai un peu de mal avec la fonction "def" et la boucle "for"
    Je me rends compte que a chaque appel de la fonction ou nouveau passage dans ma boucle for. Mes variables reviennent à zéro.
    J'ai testé en faisant un petit compteur tout bête comme si dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    # Mon test de fonction compteur
    def Test(PremierCycle=MemoPremierCycle, memo=1):
        if PremierCycle == 1: compteur=0
        if (memo == 1):
            compteur = compteur + 1
        elif (memo == 0):
            compteur = 0
        print("testcompteur****************", compteur)
     
    #Appel de la fonction
    Test()
    Du coup comment faire si je veux pas que mon compteur reparte de 0 a chaque nouvelle appel ?
    L'idée serait de le laisser s'incrémenter.

    Merci à vous.

  2. #2
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    def Test():
        Test.compteur += 1
        print(Test.compteur)
    Test.compteur = 0
     
    Test()
    Test()
    Test()

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2022
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2022
    Messages : 8
    Par défaut
    Merci pour ta réponse mais se n'est pas se que je recherche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    while(1):
        def Test2():
            Test2.compteur += 1
            print(Test2.compteur)
        Test2.compteur = 0
     
        Test2()
    Le compteur reste à 1 il s'incrémente pas.

    Ce que je veux c'est que mon compteur s'incrémente mais avec un seul appel de ma fonction.

  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
    Effectivement ça peut pas fonctionner comme ça... Ja passe mon tour.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Je dois pas bien comprendre le problème, parce que c'est basique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    >>> compteur = 0
    >>> def test():
    ...     global compteur
    ...     compteur += 1
    ... 
    ...     
    >>> test()
    >>> test()
    >>> compteur
    2
    >>> test()
    >>> compteur
    3

  6. #6
    Expert confirmé

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

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

    C'est typiquement un travail pour une fonction génératrice.
    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
     
    >>> def get_count():
    ...     counter = 0
    ...     while 1:
    ...             counter += 1
    ...             yield counter
    ... 
    >>> gen = get_count()
    >>> for i in range(10):
    ...     print(next(gen))
    ... 
    1
    2
    3
    4
    etc ...

Discussions similaires

  1. fonction colon pour cell (sans boucle for)
    Par soft001 dans le forum MATLAB
    Réponses: 1
    Dernier message: 11/09/2011, 13h11
  2. [Fonction] Quote et guillemet dans un textarea
    Par ddelec24 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 11/03/2007, 15h51
  3. Fonction Quoted printable qui ne fonctionne pas.
    Par leCcsympas dans le forum C
    Réponses: 3
    Dernier message: 13/01/2007, 18h54
  4. Inverse de la fonction QUOTE() ?
    Par __fabrice dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 13/07/2006, 10h39

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