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ó
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
Muy bueno, saqué varias cosas que coloqué en mi apunte de python que me estoy armando. Muchas gracias
Poco a poco vas colocando las piezas del puzzle. 😉
Saludos
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.
Qué tal, Juan! Me temo que no es tan simple, pero hay paquetes específicos que te facilitarán la vida.
Por ejemplo, win32print, si estás usando Windows.
Saludos
gracias justo estaba buscando como eliminar el salto de linea al final del print.
Hola. Los argumentos para print solo funcionan en python3, ¿no conoces de algún método para hacer lo mismo en python 2.x?
Ya lo he encontrado. Gracias.
Por si le sirve a alguien:
print(variable, end=»»)
En python 2.x es equivalente a:
print variable,#
¡Gracias por tu aportación!
Saludos
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
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
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.
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
Buenas tardes, Joel:
Propón un código que se aproxime y te doy sugerencias de lo que pueda estar fallando.
Saludos
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
palabra = [2*s for s in input(‘Dime una palabra: ‘)]
palabra = ‘ ‘.join(palabra)
print(palabra)
¡Muchas gracias!
También ha faltado decir que se puede concatenar texto y como convertir variables a Strings:
valor = 2;
print(«Pepa pig tiene » +str(valor)+» orejas.»);
>> Pepa pig tiene 2 orejas.
No es tan útil como separar con comas, pero sí lo es para situaciones específicas.
print(Salu+str(valor))
print(Salu+str(valor))
NameError: name ‘Salu’is not defined :V
Muy interesante!
print(«Salu»+str(valor))
se puede usar así o bien : print(«Pepa pig tiene {} orejas».format(valor))
que es mas legible.
Muy buen post muchas gracias!!!!
hola, cuando hago la comparación entre sep=»(4espacios)» y sep=»\t», en una lista de palabras, la separación entre ellas en la cadena que sale al aplicar sep=\t se va reduciendo, no mantiene constante el espacio de separación entre las palabras ¿algo anda mal?