Python – Capítulo 31: Exprimiendo la función print

Si hay que dar el premio a la popularidad a una función, es sin duda print la ganadora. No sólo en Python, sino en cualquier otro lenguaje de programación. ¿Qué sería de nuestros motivantes Hola mundo sin ella?

El uso básico lo aprendimos desde el primer momento, pero hoy vamos a sacarle algo de punta…

Comencemos repasando el comportamiento por defecto. Observa la salida del siguiente comando:

>>> print("pepino","tomate")
pepino tomate

Primer punto a observar: print() separa cada argumento empleando un espacio en blanco.

Fíjate ahora en esto:

>>> print("pepino");print("tomate")
pepino
tomate

Segundo punto: cada impresión con print() concluye con un salto de línea.

Podemos controlar con facilidad ambos comportamientos. Es tan sencillo como indicarlo en la propia función print().

La función print() admite un argumento, llamado sep, que contiene la cadena de caracteres que emplearemos para separar cada elemento. Si no se especifica, toma su valor por defecto, un espacio en blanco, sep=" ". He intercalado un espacio entre ambas comillas y da igual que sean simples o dobles.

Por ejemplo, el siguiente comando separa los distintos elementos empleando un guión:

>>> print("pepino","tomate",sep="-")
pepino-tomate

Este otro separa cada elemento con tres espacios en blanco:

>>> print("pepino","tomate","lechuga",sep="   ")
pepino   tomate   lechuga

Podemos hacer que la separación sea exactamente un tabulador, que ya sabes que se representa con el siguiente carácter de escape: \t.

>>> print("pepino","tomate","lechuga",sep="\t")
pepino  tomate  lechuga

Generemos ahora una salida sin separación entre cada palabra:

>>> print("pepino","tomate","lechuga",sep="")
pepinotomatelechuga

Los dos pares de comillas han sido escritos sin un espacio en blanco entre ellas.

Si queremos separar las palabras elegantemente, podemos utilizar como separador una coma junto con un espacio en blanco:

>>> print("pepino","tomate","lechuga",sep=", ")
pepino, tomate, lechuga

Quiero que te fijes bien en que el separador sólo se coloca entre medias de los elementos, y no al final. Pero puedes indicar también cómo quieres que termine la impresión empleando un nuevo argumento opcional, end. Si no se especifica, toma su valor por defecto, que como hemos dicho, provoca un salto de línea, representando por el carácter de escape \n.

El siguiente ejemplo finaliza la impresión con dos guiones:

>>> print("pepino","tomate","lechuga",end="--")
pepino tomate lechuga--

Si queremos que la salida de un print() no provoque un cambio de línea y nos deje el cursor para que el siguiente print() continúe justo donde acabó el anterior, debemos facilitar el siguiente argumento: end=''. Date cuenta de que no hay ningún espacio en blanco entre ambas comillas (también podría haber empleado comillas dobles en vez de simples).

Observa ahora el resultado de estas dos instrucciones:

>>> print("pepino",end="");print("tomate")
pepinotomate

Tal como era de esperar, ambas palabras han aparecido juntas, continuando la segunda justo donde termina la primera.

Un último ejemplo, para finalizar, en el que combinaremos ambos argumentos:

>>> a='Azul'
>>> b='Verde'
>>> c='Rojo'
>>> print(a,b,c,sep=', ',end='.')
Azul, Verde, Rojo.

No es necesario comentar nada, ¿verdad?

Javier Montero Gabarró


Python – Capítulo 31: Exprimiendo la función print


El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)


El Club del Autodidacta

15 opiniones en “Python – Capítulo 31: Exprimiendo la función print”

  1. Javier, muy interesante tu página, pero ki duda era como puedo sacar por impresora un resultado. Pues la función Print sólo funciona con la pantalla.
    ¿O no?.
    Muchas gracias por todo.

  2. Hola. Los argumentos para print solo funcionan en python3, ¿no conoces de algún método para hacer lo mismo en python 2.x?

    1. Ya lo he encontrado. Gracias.
      Por si le sirve a alguien:
      print(variable, end=””)
      En python 2.x es equivalente a:
      print variable,#

  3. Buenos días Tocayo: Yo que no conozco casi de programación estoy usando una aplicación que al final me imprime resultados y creo que tu experiencia me puede ayudar. Leí tu blog y traté de aplicat la función tabulador y al no darme resultados esperados entonces te escribo:

    Tengo la siguiente línea de código:

    print “Nombre: ” , (details[‘persons_name’])

    Me dá como resultado

    Nombre: Pedro

    Que deseo ?

    Quiero escribir [Nombre:” a partir de ciertos caractéres a partir del márgen izquierdo, no en el borde izquierdo Luego quiero escribir “Pedro” a cierta distancia a la derecha y que si escribo más nombres en líneas inferiores todas comiencen a la misma distancia del borde izquierdo .

    Espero me puedas ayudar,

    Gracias
    Javier Cáceres

    1. Buenos días:
      Puedes hacerlo jugando con el especificador de conversión %s. Los introduzco aquí, pero es sólo una presentación. Sugerencias: en la cadena de conversión agrega los espacios en blanco iniciales y el texto fijo que quieras. Después juega con conversiones como %-20s para garantizar 20 espacios justificando a la izquierda o %20s para lo mismo pero a la derecha.
      Saludos

      1. Gracias Javier, voy a “jugar” con estos parámetros a ver que sale y aviso aquí a tus lectores. También me has puesto en el camino de aprender para que sirven estos especificadores de conversión.

  4. Saludos ayudenme por favor necesito hacer que una cadena por ejemplo HOLA se separe cada letra y se duplique dicha letra por ejemplo HH OO LL AA gracias de antemano por la ayuda

      1. Holaa . Acabo de descargar Python. Y estoy haciendo un curso online que emplea PyCharm. Me llama la atención que cuando trato de usar los comandos de end y sep con el print no me lo reconoce. Me sale error. Por que sera que sucede esto? Gracias de antemano

Deja un comentario