265 votes

Existe-t-il un label/goto en Python ?

Y a-t-il un goto ou tout autre équivalent en Python pour pouvoir sauter à une ligne de code spécifique ?

3 votes

L'étiquette est assez vague. Pouvez-vous être plus précis sur ce que vous recherchez ?

16 votes

25 votes

Un de mes amis a mis en place goto en Python alors qu'il traduisait du code Fortran en Python. Il s'est détesté pour ça.

3voto

yaitloutou Points 884

Je cherchais quelque chose de similaire à

for a in xrange(1,10):
A_LOOP
    for b in xrange(1,5):
        for c in xrange(1,5):
            for d in xrange(1,5):
                # do some stuff
                if(condition(e)):
                    goto B_LOOP;

Mon approche a donc consisté à utiliser un booléen pour m'aider à me libérer des boucles for imbriquées :

for a in xrange(1,10):
    get_out = False
    for b in xrange(1,5):
        if(get_out): break
        for c in xrange(1,5):
            if(get_out): break
            for d in xrange(1,5):
                # do some stuff
                if(condition(e)):
                    get_out = True
                    break

3voto

Somanna Points 250

Bien qu'il n'y ait pas d'équivalent de code à goto/label en Python, vous pourriez toujours obtenir une telle fonctionnalité de goto/label en utilisant des boucles.

Prenons un exemple de code montré ci-dessous où goto/label peut être utilisé dans un langage arbitraire autre que python.

String str1 = 'BACK'

label1:
    print('Hello, this program contains goto code\n')
    print('Now type BACK if you want the program to go back to the above line of code. Or press the ENTER key if you want the program to continue with further lines of code')
    str1 = input()

if str1 == 'BACK'
    {
        GoTo label1
    }
print('Program will continue\nBla bla bla...\nBla bla bla...\nBla bla bla...')

Maintenant, la même fonctionnalité de l'exemple de code ci-dessus peut être réalisée en python en utilisant une fonction while comme indiqué ci-dessous.

str1 = 'BACK'

while str1 == 'BACK':
        print('Hello, this is a python program containing python equivalent code for goto code\n')
        print('Now type BACK if you want the program to go back to the above line of code. Or press the ENTER key if you want the program to continue with further lines of code')
        str1 = input()
print('Program will continue\nBla bla bla...\nBla bla bla...\nBla bla bla...')

3voto

Nikhil Dinesh Points 1412

Vous pouvez le faire en utilisant des méthodes imbriquées dans python.

def func1():
    print("inside func1")
    def inline():
        print("im inside")

    inline()

func1()

2voto

ancho Points 109

Il y a maintenant. goto

Je pense que cela pourrait être utile pour ce que vous recherchez.

1voto

Sand1512 Points 248

Je voulais la même réponse et je ne voulais pas utiliser goto . J'ai donc utilisé l'exemple suivant (tiré de learnpythonthehardway)

def sample():
    print "This room is full of gold how much do you want?"
    choice = raw_input("> ")
    how_much = int(choice)
    if "0" in choice or "1" in choice:
        check(how_much)
    else:
        print "Enter a number with 0 or 1"
        sample()

def check(n):
    if n < 150:
        print "You are not greedy, you win"
        exit(0)
    else:
        print "You are nuts!"
        exit(0)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X