Em.
Supongamos que al entrar en el bucle:
Para ser coherentes.
En el primer elemento de tu ejemplo, no entra en el if.
En el segundo tampoco.
En el tercero, tampoco, ni cuarto, ni quinto.
En el sexto si. Entonces, pasa a valer todo:
Código: Seleccionar todo
result2: Lo que había más la definición de... nada! porque synset3 no estaba establecido.
i=1
synset2="Synset('crash.v.01')"
synset3="crash.v.01"
En el séptimo, no entraría. De hecho, ya no entraría en ninguno más, porque ya no encontrará otro "Synset('crash.v.01')"
Esto si empiezas el bulce con i=0.
Si empezaras el bucle con i=1, aún la cosa parece que podría funcionar como parece que quieres que funcione. Pero si, obviamente, hace una búsqueda simple en el bulce hasta que encuentra el primero, y después busca los demás. Y obviamente, hasta que no encuentra el primero no empieza la secuencia.
Me faltan para estar seguro: Los valores iniciales de la i, del synset2 y del verb2, para saber exactamente qué coño quieres con ese bucle extraño.
Y si quieres una solución sencilla a tu problema (aunque cutre, porque venga a hacer bucles)...
Código: Seleccionar todo
i=1
synset2="Synset('crash.v.01')"
verb2="crash"
HeTocadoUno=true
while HeTocadoUno
HeTocadoUno=false
for item in listasyn:
if synset2 == str(item):
HeTocadoUno=true
result2 = result2 + "\n -" + wn.synset(synset3).definition
i = i + 1
synset2 = "Synset('" + verb2 + ".v.0" + str(i) + "')"
synset3 = verb2 + ".v.0" + str(i)
La variable HeTocadoUno nos permitirá saber si se ha visto alguno, y en ese caso, volver a empezar el bucle. Se ejecutará hasta que ya no se encuentre ninguno.
Lento de cojones y más feo que pegarle a un padre con un calcetín sudao, la opción más bonita sería ordenar antes listasyn con alguna bonita orden de esas de ordenar listas. Pero a falta de pan...
Este es un mundo de estúpidos, controlados por imbéciles, para beneficio de mediocres.