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 :

Revenir à l'itération précédente ?


Sujet :

Python

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2015
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2015
    Messages : 43
    Points : 30
    Points
    30
    Par défaut Revenir à l'itération précédente ?
    Bonjour,

    Je souhaite savoir s'il est possible de revenir en arrière dans un boucle for, je ne trouve rien à ce sujet.
    Quelque chose dans ce style mais où l'indice "i" pourrait revenir en arrière dans le cas du "P"

    En gros j'utilise un fichier dans lequel chaque ligne est lue à chaque passage suivant de la boucle.
    Je veux que en appuyant sur S ça m'affiche la ligne suivante, et en appuyant sur P la ligne précédente.

    Pour tout ce qui est du readlines(), de l'ouverture du fichier tout ça c'est ok j'ai déjà.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for i in range (1, 100):
        valeur = input("entrez S pour suivant, P pour précédent")
        print(i)
        if valeur == "S":
            print("passer à la boucle suivante")
        elif valeur == "P":
            print("retour à la boucle précédente")
    Et autre chose, peut on enregistrer où on en est dans la boucle et reprendre plus tard, je m'explique.
    Admettons que j'en soit à la ligne 50 (donc i = 50), Est-ce que l'on peut (par la création d'un fichier tampon peut-être), fermer le .py, le rouvrir un autre jour, et reprendre à la ligne 50 (où on en était en fait)



    Merci de m'avoir lu :-)

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par esope60 Voir le message
    Je souhaite savoir s'il est possible de revenir en arrière dans un boucle for, je ne trouve rien à ce sujet.
    La boucle "for" est une structure assez basique. Si vous voulez faire autre chose, il faut le programmer explicitement plutôt qu'essayer de faire faire à une boucle "for" ce qu'elle ne sait pas (ou ne doit pas) faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>> ix = 0
    >>> while True:
    ...     print (ix)
    ...     choix = input('N or P: ')
    ...     if choix == 'P':
    ...        ix = max(0, ix - 1)
    ...     elif choix == 'N':
    ...        ix += 1
    ...

    Citation Envoyé par esope60 Voir le message
    Et autre chose, peut on enregistrer où on en est dans la boucle et reprendre plus tard, je m'explique.
    Admettons que j'en soit à la ligne 50 (donc i = 50), Est-ce que l'on peut (par la création d'un fichier tampon peut-être), fermer le .py, le rouvrir un autre jour, et reprendre à la ligne 50 (où on en était en fait)
    Techniquement, il faut sauvegarder l'index dans un fichier et le lire au lancement du programme.
    Cà fait beaucoup de lignes de code à ajouter à une simple boucle "for" pour arriver à faire çà.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2015
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2015
    Messages : 43
    Points : 30
    Points
    30
    Par défaut
    super merci je vais essayer ça.

    C'est pas grave pour les lignes de codes (mon programme en fait déjà 300, vu que je ne suis pas à l'aise avec les fonctions tout se suit, mais ça marche bien ^^), je vois à peu près comment faire du coup avec fichier à part, ça devrait aller.

    Merci !

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par esope60 Voir le message
    C'est pas grave pour les lignes de codes (mon programme en fait déjà 300, vu que je ne suis pas à l'aise avec les fonctions tout se suit, mais ça marche bien ^^)
    Quelque soit l'organisation de votre code, le programme peut être "fonctionnel".
    L'organisation n'est là que pour des attributs non fonctionnels genre: lisibilité, maintenabilité, performance, réutilisation,....

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Août 2015
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2015
    Messages : 43
    Points : 30
    Points
    30
    Par défaut
    Merci c'est motivant ^^

    Voilà j'ai adapté le code à ma situation c'est nickel. Un peu lourd, surtout que je vais devoir imbriquer ça à un endroit où j'ai déjà 4 boucles imbriquées (while, if, for, while). Je n'ai pas réussi à faire autrement mais bon.

    Donc là j'ai une deuxième variable iy qui indique si je suis dans le sens de lecture normal ou inversé, et c'est le même paramètre "n" qui fait avancer la boucle dans les deux cas (exactement ce que je voulais, même si j'imagine qu'on pouvait faire plus simple, moi ça me va )


    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
    ix = 1
    iy = 1
    while ix<25:
        print (ix)
        choix = input('n or r: ')
        if choix == 'n' and iy == 1:
            ix += 1
        elif choix == 'n' and iy == 0:
            ix = max(1, ix - 1)
        elif choix == 'r':
            if iy == 1:
                iy =0
                print("reverse")
            elif iy == 0:
                iy =1
                print("normal")

    Merci encore

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par esope60 Voir le message
    Merci c'est motivant ^^

    Voilà j'ai adapté le code à ma situation c'est nickel. Un peu lourd, surtout que je vais devoir imbriquer ça à un endroit où j'ai déjà 4 boucles imbriquées (while, if, for, while). Je n'ai pas réussi à faire autrement mais bon.
    peut être... mettre chaque boucle imbriquée dans une fonction.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,

    Plus simple peut-être:
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    >>> inc = 1
    >>> ix = 1
    >>> while 1:
    ...     inp = input('n or r: ')
    ...     if inp == 'r':
    ...             inc *= -1
    ...     elif inp == 'n':
    ...             ix = max(1, ix + inc)
    ...             print(ix)
    ...     else:
    ...             break
    ... 
    n or r: n
    2
    n or r: n
    3
    n or r: n
    4
    n or r: r
    n or r: n
    3
    n or r: n
    2
    n or r: n
    1
    n or r: n
    1
    n or r: n
    1
    n or r: r
    n or r: n
    2
    n or r:

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

Discussions similaires

  1. Comment revenir à la page précédente en cliquant sur un lien
    Par veevee dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 21/04/2007, 19h29
  2. problème de script php pour revenir à la page précédente
    Par mandyben dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 14/09/2006, 10h12
  3. Revenir à la page précédente
    Par Llaur76 dans le forum Struts 1
    Réponses: 13
    Dernier message: 11/07/2006, 20h29
  4. revenir à la page précédente
    Par sam01 dans le forum Langage
    Réponses: 1
    Dernier message: 08/04/2006, 00h43
  5. Réponses: 3
    Dernier message: 18/02/2005, 19h19

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