Python - Ayuda con codigo, error Set changed size during iteration

   
Vista:

Ayuda con codigo, error Set changed size during iteration

Publicado por santiago (3 intervenciones) el 08/11/2016 02:44:54
Hola gente, necesito ayuda con este codigo. Me da un error raro, me dice que la variable c cambia durante la iteracion (for x in c) pero no la toco en ningun momento, nose porque esta pasando.

RJAlvJV

en el link esta el codigo, es corto pero falla nose porque.

desde ya muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Juanito

Ayuda con codigo, error Set changed size during iteration

Publicado por Juanito (31 intervenciones) el 08/11/2016 03:30:24
Podrias poner el codigo para copiarlo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con codigo, error Set changed size during iteration

Publicado por santiago (3 intervenciones) el 08/11/2016 03:33:21
Sisi aca te lo envio:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
gramatica={'noTerminales':"Z,E,A",'terminales':"a,b",'simboloInicial':"Z",'producciones':["Z=>E","E=>(E+T)","E=>(E+T)","E=>id","T=>alksdla"]}
c={"Z=>.E"}
cc={}
senial=True
while senial==True:
    cc=c
    for x in c:
        noterminal=x[4]
        if noterminal in gramatica['noTerminales']:
            for y in gramatica['producciones']:
                if (y[0]==noterminal):
                    y=y[:3]+"."+y[3:]
                    cc.add(y)
    if c!=cc:
        c=(c|cc)
    else:
        senial=False
for t in c:
    print(t)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Ayuda con codigo, error Set changed size during iteration

Publicado por xve (1378 intervenciones) el 08/11/2016 08:13:06
Hola Santiago, el problema que tienes, es que c y cc son el mismo objeto, por lo que cuando modificas cc también estas modificando el contenido de la variable c, por eso se queja de que se ha modificado el contenido de c

Para solucionarlo, tienes que obtener una copia del diccionario...
1
cc=c.copy()
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Ayuda con codigo, error Set changed size during iteration

Publicado por santiago (3 intervenciones) el 08/11/2016 08:16:19
Genio !! Muchas gracias. Ahi anduvo perfecto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar