Python - Funcion intercalar textos

 
Vista:

Funcion intercalar textos

Publicado por Marcos (1 intervención) el 08/11/2018 13:31:22
Hola,

Estoy empezando con python y estoy tratando de crear una función que intercale textos, la idea es que la función tiene 3 variables, la primera y la segunda son strings y la tercera es un valor numérico que indica cada cuantos caracteres de la primera cadena se inserta 1 carácter de la segunda. Empieza bien, pero a partir de la segunda el bucle no para, aquí les dejo el código que he creado por si me pueden ayudar en qué puedo mejorarlo:

1
2
3
4
5
6
7
8
9
def intercalar (op1,op2,op3):
    i=0
    j=0
     while i<len(op1+op2):
        texto=(op1[i:(i+(op3))]+op2[j])
        print (texto)
        i=i+op3
        j=j+1
    result(texto)

En teoría el resultado de esa función tendría que ser:

intercalar(“Esto es una frase”, “gran“ , 2) = “Esgtor eas nuna frase”
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 xve
Val: 2.170
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Funcion intercalar textos

Publicado por xve (1640 intervenciones) el 08/11/2018 15:44:32
Hola Marcos, cuando llega al final de la segunda palabra (gran) te da error... tienes que reinicializar la variable j... algo así:
1
2
3
4
5
6
7
8
9
10
11
12
13
def intercalar (op1,op2,op3):
    i=0
    j=0
    while i<len(op1+op2):
        texto=(op1[i:(i+(op3))]+op2[j])
        print (texto)
        i=i+op3
        j=j+1
        if j>=len(op2):
            j=0
    return (texto)
 
print(intercalar("Esto es una frase", "gran" , 2))
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
Val: 2.170
Oro
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Funcion intercalar textos

Publicado por xve (1640 intervenciones) el 08/11/2018 15:45:29
Otra posible manera:
1
2
3
4
5
6
7
8
9
10
11
12
def intercalar (op1,op2,op3):
    j=0
    texto=""
    for i in range(op3,len(op1),op3):
        texto=op1[i-op3:i]+op2[j]
        print(texto)
        j+=1
        if j>=len(op2):
            j=0
    return texto
 
print(intercalar("Esto es una frase", "gran" , 2))
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