UnboundLocalError - en ciclo while

Iniciado por fortil, Octubre 24, 2012, 03:48:04 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Octubre 24, 2012, 03:48:04 PM Ultima modificación: Octubre 07, 2014, 09:53:55 PM por Expermicid
hola a tod@s

resulta que tengo un programa que me genera nombres a partir de un diccionario y lo que quiero es que no me genere palabras repetidas por lo que tengo este ciclo:
Código: python

a = 0
    while a < n_palabras:
        e = 0
        while e < n_letras:
            i = 0
            while i < n_palabras:
                o = 0
                while o < n_letras:
                    u = 0
                    while u < n_palabras:
                        if d_ps[a] != d_ps[i] or  d_ps[a] != d_ps[u] or d_ps[i] != d_ps[u]:
                            clave = d_ps[a]+d_ls[e]+d_ps[i]+d_ls[o]+d_ps[u]
                        else:
                            pass
                        guardar(clave)
                        u += 1
                    o += 1
                i += 1
            e += 1
        a += 1

pero me aparece este error:
Código: python
UnboundLocalError: local variable 'clave' referenced before assignment


le he cambiado la parte del if por varias y no me va, he hecho esto también:

Código: python

                        if d_ps[a] == d_ps[i] or  d_ps[a] == d_ps[u] or d_ps[i] == d_ps[u]:
                            pass
                        else:
                            clave = d_ps[a]+d_ls[e]+d_ps[i]+d_ls[o]+d_ps[u]

y nada.
la única manera que me ha dado es esta, pero el problema es que la función guardar() guarda con \n por lo que me aparecen espacios vacíos.
Código: python

                        if d_ps[a] == d_ps[i] or  d_ps[a] == d_ps[u] or d_ps[i] == d_ps[u]:
                            clave = ""
                        else:
                            clave = d_ps[a]+d_ls[e]+d_ps[i]+d_ls[o]+d_ps[u]



ya vi el error, cierrenlo xD

la vaina es que la función guardar estaba fuera de los condicionales lo cual no es aceptable porque estos evalúan o aplican dicha función. xD