Y a-t-il un goto
ou tout autre équivalent en Python pour pouvoir sauter à une ligne de code spécifique ?
Réponses
Trop de publicités?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)
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).
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
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()
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")
- Réponses précédentes
- Plus de réponses
3 votes
L'étiquette est assez vague. Pouvez-vous être plus précis sur ce que vous recherchez ?
16 votes
import goto
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.6 votes
github.com/cdjc/goto (c'est beaucoup plus rapide que l'implémentation entrienne)
0 votes
"L'étiquette est plutôt vague", aucune étiquette n'est intelligente, la structure fonctionne comme une machine.
2 votes
Dans le contexte de l'étiquette "goto" est très clair pour tout programmeur expérimenté