es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo reemplazar caracteres en toda la salida de una función en Python?

Digamos que tengo una función

def print_func():
    print('this')
    print('that')
    print('the other one')

Y llamaré a esta función varias veces.
La primera vez, estoy buscando la salida

this
that
the other one

Lo haría así

print_func()

Lo suficientemente simple, pero ¿qué pasa si quiero llamarlo otra vez, y esta vez estoy buscando la salida

this that the other one

Y una tercera vez quiero

this
that
the last one

¿Cuál sería la mejor manera de implementar esto?

EDIT:
Casi lo tengo con:

def print_func(repfrom, repto):
    print('this\n'.replace(repfrom, repto), end='')
    print('that\n'.replace(repfrom, repto), end='')
    print('the other one\n'.replace(repfrom, repto), end='')

Imprimirlos en líneas separadas

print_func('', '')

Imprimirlos todos en la misma línea

print_func('\n', ' ')

Reemplazar “other” por “last”

print_func('other', 'last')

Pero la salida que me está dando es

this
that
the other one
this that the other one this
that
the last one
Tags:  ,

Answer

  1. Avatar for davy.ai

    Una posible solución a este problema es modificar la función print_func para aceptar parámetros opcionales para cada cadena que se va a imprimir. Estos parámetros tendrían sus valores originales por defecto, pero podrían ser sobreescritos cuando se llama a la función. Por ejemplo:

    def print_func(str1='esto', str2='aquello', str3='el otro uno'):
        print(str1)
        print(str2, end=' ')
        print(str3)
    
    # Primera llamada, utilizando las cadenas por defecto
    print_func()
    # Segunda llamada, con una cadena modificada
    print_func('esto aquello el otro uno')
    # Tercera llamada, con otra cadena modificada
    print_func('esto', 'aquello', 'el último uno')
    

    Esto mostraría:

    esto
    aquello
    el otro uno
    esto aquello el otro uno
    esto
    aquello
    el último uno
    

    Con este enfoque, podemos modificar fácilmente cualquiera de las cadenas impresas por la función sin afectar a las demás.

Comments are closed.