Python goto

kobeilprofeta
Ho una serie di cicli annidati, voglio, verificata una certa condizione, uscire da tutti i cicli (quindi in particolare da quello più esterno). Se uso break mi esce solo dal più interno... come fare??

grazie

Risposte
apatriarca
Alcune soluzioni potrebbero essere:
1. Inserire una condizione sul ciclo più esterno in modo da uscire dal ciclo quando desideri.
2. Inserire i tuoi cicli in una funzione e usare return
3. Usare una eccezione (non proprio elegante..)
Se inserisci il codice possiamo essere più di aiuto.

kobeilprofeta
Ho risolto così, usando la variabile esci come "flag"
s=str(input("Inserisci una stringa: "))

alfabeto=['q','w','e','r','t','y','u','i','o','p','a','s','d','f','g','h','j','k','l','z','x','c','v','b','n','m']

esci=0

for t1 in alfabeto:
	t=t1
	if (t==s or esci==1):
		if (esci==0):
			parola_trovata=t
		esci=1
		break
	for t2 in alfabeto:
		t=t1+t2
		if (t==s or esci==1):
			if (esci==0):
				parola_trovata=t
			esci=1
			break
		for t3 in alfabeto:
			t=t1+t2+t3
			if (t==s or esci==1):
				if (esci==0):
					parola_trovata=t
				esci=1
				break
			for t4 in alfabeto:
				t=t1+t2+t3+t4
				if (t==s or esci==1):
					if (esci==0):
						parola_trovata=t
					esci=1
					break
				for t5 in alfabeto:
					t=t1+t2+t3+t4+t5
					if (t==s or esci==1):
						if (esci==0):
							parola_trovata=t
						esci=1
						break
					for t6 in alfabeto:
						t=t1+t2+t3+t4+t5+t6
						if (t==s or esci==1):
							if (esci==0):
								parola_trovata=t
							esci=1
							break
#						for t7 in alfabeto:
#							t=t1+t2+t3+t4+t5+t6+t7
#							if (t==s or esci==1):
#								if (esci==0):
#									parola_trovata=t
#								esci=1
#								break
#							for t8 in alfabeto:
#								t=t1+t2+t3+t4+t5+t6+t7+t8
#								if (t==s or esci==1):
#									if (esci==0):
#										parola_trovata=t
#									esci=1
#									break
#								for t9 in alfabeto:
#									t=t1+t2+t3+t4+t5+t6+t7+t8+t9
#									if (t==s or esci==1):
#										if (esci==0):
#											parola_trovata=t
#										esci=1
#										break
#									for t10 in alfabeto:
#										t=t1+t2+t3+t4+t5+t6+t7+t8+t9+t10
#										if (t==s or esci==1):
#											if (esci==0):
#												parola_trovata=t
#											esci=1
#											break

print("Ecco la stringa: "+parola_trovata)


Era la tua proposta 3?

apatriarca
No, era la risposta 1..

kobeilprofeta
ok, grazie

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.