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 :

Comment arrêter l'exécution d'un script ?


Sujet :

Python

  1. #1
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut Comment arrêter l'exécution d'un script ?
    Bonjour,

    J'ai un petit script qui a deux boucles imbriquées. Dans la seconde, je teste une valeur et si celle-ci est correcte, je souhaite stopper l'exécution du script.

    Actuellement, j'ai mis un mais il me fait revenir dans la première boucle...

    Savez-vous comment je peux faire ?

    Merci,
    ZiP

  2. #2
    Expert éminent

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

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

    Tu ne peux pas faire précéder ton break par une invalidation de la première boucle ?

    Comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    while loop1:
        while loop2:
            if foo:
                ...
            else:
                loop1 = False
                break

  3. #3
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut
    Bonjour VinsS,

    C'est deux boucles for.

    ZiP

  4. #4
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut
    Pour le moment, j'ai mis un au début du code puis un avant le break puis un test à la fin de ma première boucle for.

    ZiP

  5. #5
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 301
    Points : 6 781
    Points
    6 781
    Par défaut
    Citation Envoyé par [ZiP] Voir le message
    Bonjour VinsS,

    C'est deux boucles for.

    ZiP
    Ca ne change rien.

  6. #6
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 053
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 053
    Points : 1 384
    Points
    1 384
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    >>> for i in range(10):
    ...     for j in range(10):
    ...         print(i,j)
    ...         if (i,j) == (5,5):break
    ...     else:continue
    ...     break
    sinon, s'il faut quitter l'exécution:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    >>> for i in range(10):
    ...     for j in range(10):
    ...         print(i,j)
    ...         if (i,j) == (5,5): exit()

  7. #7
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    947
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 947
    Points : 1 351
    Points
    1 351
    Par défaut
    Salut,

    On peut encapsuler dans une fonction (pseudo code)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def check(...):
        for idx1 in range(...):
            for idx2 in range(...):
                if ... == ...:
                    return ...
        return ...
    ou utiliser un boolean (pseudo code)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    found = False
    for idx1 in range(...):
        for idx2 in range(...):
            if ... == ...:
                found = True
            if found:
                break
        if found:
            break
    A+

    Pfeuh

  8. #8
    Expert éminent

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

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 301
    Points : 6 781
    Points
    6 781
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    for idx1 in range(max):
        for idx2 in range(max2):
            if condition:
                ...
            else:
                idx1 = max
                break
    Zip ne va plus savoir choisir. A sa place je ferais un break

  9. #9
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut
    Bonjour,

    Voici un code d'exemple qui ne fonctionne pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    max = 7
    somme = 0
     
    for idx1 in range(max):
        for idx2 in range(max):
            somme = idx1 + idx2
            print('somme = %d' % somme)
            if (somme == 7):
                idx1 = max
                break
    somme = 0
    somme = 1
    somme = 2
    somme = 3
    somme = 4
    somme = 5
    somme = 6
    somme = 1
    somme = 2
    somme = 3
    somme = 4
    somme = 5
    somme = 6
    somme = 7
    somme = 2
    somme = 3
    somme = 4
    somme = 5
    somme = 6
    somme = 7
    somme = 3
    somme = 4
    somme = 5
    somme = 6
    somme = 7
    somme = 4
    somme = 5
    somme = 6
    somme = 7
    somme = 5
    somme = 6
    somme = 7
    somme = 6
    somme = 7
    Pourquoi ça ne fonctionne pas ?

    ZiP

  10. #10
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    947
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 947
    Points : 1 351
    Points
    1 351
    Par défaut
    Parce que ce n'est pas toi qui décide de la valeur de idx1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for idx1 in range(10):
        print idx1,
        idx1 = 133
        print idx1x
    range(10)
    est équivalent à
    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    à chaque itération de la boucle for, idx 1 est chargé avec l'élément suivant de la liste

  11. #11
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonsoir,

    Citation Envoyé par [ZiP] Voir le message
    je souhaite stopper l'exécution du script.
    import sys
    sys.exit() ?

    @+

Discussions similaires

  1. [EasyPHP] Comment programmer l'exécution d'un script php ?
    Par onlytime dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 29/03/2008, 19h56
  2. Comment arrêter l'exécution d'un programme "busy"
    Par toitonline dans le forum MATLAB
    Réponses: 1
    Dernier message: 31/05/2007, 11h18
  3. Réponses: 6
    Dernier message: 12/12/2006, 01h30
  4. [javascript] comment interrompre l'exécution d'un script?
    Par r0d dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 09/11/2006, 13h01
  5. [java.util.Timer]Comment arrêter l'exécution d'un Thread
    Par Invité dans le forum Concurrence et multi-thread
    Réponses: 1
    Dernier message: 07/06/2006, 07h54

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