Foros del Web » Programando para Internet » Python »

Ayuda con uso de dos for

Estas en el tema de Ayuda con uso de dos for en el foro de Python en Foros del Web. Disculpen la molestia, pero esta vez si estoy muy perdido y con la cabeza atrofiada. Estoy tratando de hacer algo que seguro es muy simple ...
  #1 (permalink)  
Antiguo 12/01/2011, 00:41
 
Fecha de Ingreso: marzo-2009
Mensajes: 25
Antigüedad: 15 años, 9 meses
Puntos: 0
Ayuda con uso de dos for

Disculpen la molestia, pero esta vez si estoy muy perdido y con la cabeza atrofiada. Estoy tratando de hacer algo que seguro es muy simple pero no consigo.

Lo que necesito es dada un cadena, sustituir cada 8 caracter por cada caracter correspondiente de otra cadena. Ej:
Código Python:
Ver original
  1. original = "0123456712345678"
  2. remplazo = "ab"
Dadas esas cadenas deberia obtener
Cita:
0123456a1234567b
Eh estado haciendo lo siguiente:
Código Python:
Ver original
  1. #!/usr/bin/env python
  2. original = "0123456712345678"
  3. remplazo = "ab"
  4. longorig = len(original)
  5. i=""
  6. acorto =""
  7. final =""
  8. for i in range(0,longorig,8):
  9.     acorto += original[i:i+7]
  10.     k=""
  11.     for k in remplazo:
  12.         final += acorto+remplazo
  13. print final

Pero obtengo pesimos resultados. Se que la primera parte la hago bien, por que recorro cada ocho, y nada mas todo los primeros 7 que quiero. Pero debo usar un segundo for dentro del mismo for de 8 para meter el caracter de remplazo

No se si alguien podria guiarme de favor. Estare muy agradecido con ustedes.

Gracias por su atencion!!

Saludos ;)
  #2 (permalink)  
Antiguo 12/01/2011, 06:04
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Ayuda con uso de dos for

creo que sería más sencillo recorrer la cadena de reemplazo, y para cada uno de sus caracteres, reemplazar la posición correspondiente de la cadena (previamente convertida a una lista). La "posición correspondiente" sería la posición del caracter en la cadena de reemplazo * 8

Algo así:
Código Python:
Ver original
  1. lista = list(original)
  2. pos_reemplazo = 1
  3. for i in reemplazo: lista[pos_reemplazo*8] = i


Saludos.
  #3 (permalink)  
Antiguo 12/01/2011, 14:11
 
Fecha de Ingreso: marzo-2009
Mensajes: 25
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Ayuda con uso de dos for

Intente hacerlo como dice, pero no me funciono, o probablemente no entendi como hacerlo bien. Disculpe
  #4 (permalink)  
Antiguo 12/01/2011, 14:44
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Ayuda con uso de dos for

hombre, "no me funcionó" no es una frase que ayude, ¿qué es lo que falló? ¿qué es lo que no se entiende?


Saludos
  #5 (permalink)  
Antiguo 12/01/2011, 15:07
 
Fecha de Ingreso: marzo-2009
Mensajes: 25
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Ayuda con uso de dos for

Perdone, lo que sucede es que manejo muchos for, y me vendria bien ver como lograrlo con ellos :(
  #6 (permalink)  
Antiguo 13/01/2011, 05:20
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Ayuda con uso de dos for

Está bien, pero es que el código que te puse antes está casi completo, solamente le faltaría manejar el caso de que haya más caracteres de reemplazo de los que la cadena admite, es decir, que por ejemplo tenga la cadena "abcd", y me pidan reemplazar cada 8 caracteres (el for que puse antes fallará porque no existe el índice 8). Eso te lo dejo para que lo manejes vos.

La idea es la siguiente:
1.- transformar la cadena en una lista con list(cadena). Esto es necesario porque las cadenas son inmutables, no se puede simplemente hacer algo como
Código Python:
Ver original
  1. cadena = "hola"
  2. cadena[1] = "h"
Entonces se convierte la cadena a una lista, para poder hacer las modificaciones.
Código:
>>> list("hola")
["h", "o", "l", "a"]
Luego, copiás el n-ésimo caracter de la cadena de reemplazo en la posición n*8 de la lista. Eso es lo que hace el for: el primer caracter irá a la posición 0 (0*8), el segundo a la posición 8 (1*8), y así.

Luego, para terminar, hacés un join() de la lista para obtener la cadena:
Código Python:
Ver original
  1. ''.join(lista)

Debería funcionar, si lo probás y no funciona por favor poné el código y especificá por qué no funciona.


saludos.
  #7 (permalink)  
Antiguo 13/01/2011, 23:44
 
Fecha de Ingreso: marzo-2009
Mensajes: 25
Antigüedad: 15 años, 9 meses
Puntos: 0
Respuesta: Ayuda con uso de dos for

Tenias razon alvaro, no tenia que usar dos for, era mas facil que ello. Tampoco converti a lista..alfinal lo resolvi de esta manera
Código Python:
Ver original
  1. #!/usr/bin/env python
  2. original = "0123456712345678"
  3. remplazo = "ab"
  4. acorto =""
  5. final =""
  6. k=""
  7. for i in range(0,len(original),8):
  8.     acorto = original[i:i+7]
  9.     k = remplazo[i/8:(i/8)+1]
  10.     final += acorto+k
  11. print final
Muchas gracias por tu atencion y ayuda

Saludos ;)

Etiquetas: dos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:11.