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.

1voto

Anonaguy Points 11

J'ai ma propre façon de faire les gotos. J'utilise des scripts python séparés.

Si je veux faire une boucle :

fichier1.py

print("test test")
execfile("file2.py")
a = a + 1

fichier2.py

print(a)
if a == 10:
   execfile("file3.py")
else:
   execfile("file1.py")

file3.py

print(a + " equals 10")

( NOTE : Cette technique ne fonctionne que sur les versions Python 2.x)

1voto

JGFMK Points 405

Pour un Goto avant, vous pouvez simplement ajouter :

while True:
  if some condition:
    break
  #... extra code
  break # force code to exit. Needed at end of while loop
#... continues here

Cela n'est cependant utile que pour les scénarios simples (par exemple, l'imbrication de ces éléments vous mettrait dans le pétrin).

1voto

Chris Rogan Points 11

Au lieu d'un équivalent goto en python, j'utilise l'instruction break de la manière suivante pour des tests rapides de mon code. Cela suppose que vous avez une base de code structurée. La variable test est initialisée au début de votre fonction et je déplace simplement le bloc "If test : break" à la fin du bloc if-then imbriqué ou de la boucle que je veux tester, en modifiant la variable return à la fin du code pour refléter la variable du bloc ou de la boucle que je teste.

def x:
  test = True
  If y:
     # some code
     If test:
            break
  return something

1voto

Python Experts Points 1

Non, il existe une autre façon d'implémenter l'instruction goto.

class id:
     def data1(self):
        name=[]
        age=[]   
        n=1
        while n>0:
            print("1. for enter data")
            print("2. update list")
            print("3. show data")
            print("choose what you want to do ?")
            ch=int(input("enter your choice"))
            if ch==1:    
                n=int(input("how many elemet you want to enter="))
                for i in range(n):
                    name.append(input("NAME "))
                    age.append(int(input("age "))) 
            elif ch==2:
                name.append(input("NAME "))
                age.append(int(input("age ")))
            elif ch==3:
                try:
                    if name==None:
                        print("empty list")
                    else:
                        print("name \t age")
                        for i in range(n):
                            print(name[i]," \t ",age[i])
                        break
                except:
                    print("list is empty")
            print("do want to continue y or n")
            ch1=input()
            if ch1=="y":
                n=n+1
            else:
                print("name \t age")
                for i in range(n):
                    print(name[i]," \t ",age[i])
                n=-1
p1=id()
p1.data1()

0voto

Hamza Tanveer Points 35

Je pense que la boucle while est une alternative au "goto_Statement". Car après la version 3.6, la boucle goto ne fonctionne plus. J'ai aussi écrit un exemple de la boucle while.

str1 = "stop"
while str1 == "back":
    var1 = int(input(" Enter Ist Number: "))
    var2 = int(input(" Enter 2nd Number: "))
    var3 = print("""  What is your next operation
                      For Addition   Press And Enter : 'A'
                      For Muliplt    Press And Enter : 'M'
                      For Division   Press And Enter : 'D'
                      For Subtaction Press And Enter : 'S' """)

    var4 = str(input("For operation press any number : "))
    if(var1 == 45) and (var2 == 3):
        print("555")
    elif(var1 == 56) and (var2 == 9):
        print("77")
    elif(var1 == 56) and (var2 == 6):
        print("4")
    else:
        if(var4 == "A" or "a"):
            print(var1 + var2)
        if(var4 == "M" or "m"):
            print(var1 * var2)
        if(var4 == "D" or "d"):
            print(var1 / var2)
        if(var4 == "S" or "s"):
            print(var1 - var2)

    print("if you want to continue then type  'stop'")

    str1 = input()
print("Strt again")

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