Respuestas:
Hay varias formas de lograr su resultado. Si solo desea una solución para su caso, use la multiplicación de cadenas como menciona @Ant . Esto solo funcionará si cada una de sus print
declaraciones imprime la misma cadena. Tenga en cuenta que funciona para la multiplicación de cualquier cadena de longitud (por ejemplo, 'foo' * 20
funciona).
>>> print 'a' * 20
aaaaaaaaaaaaaaaaaaaa
Si desea hacer esto en general, cree una cadena y luego imprímala una vez. Esto consumirá un poco de memoria para la cadena, pero solo hará una sola llamada a print
. Tenga en cuenta que la concatenación de cadenas que utiliza +=
ahora es lineal en el tamaño de la cadena que está concatenando, por lo que será rápido.
>>> for i in xrange(20):
... s += 'a'
...
>>> print s
aaaaaaaaaaaaaaaaaaaa
O puede hacerlo más directamente usando sys.stdout . write () , que print
es una envoltura alrededor. Esto escribirá solo la cadena sin formato que le dé, sin ningún formato. Tenga en cuenta que no se imprime nueva línea incluso al final de los 20 a
s.
>>> import sys
>>> for i in xrange(20):
... sys.stdout.write('a')
...
aaaaaaaaaaaaaaaaaaaa>>>
Python 3 cambia la print
declaración en una función print () , que le permite establecer un end
parámetro. Puede usarlo en> = 2.6 importando desde __future__
. Sin embargo, evitaría esto en cualquier código serio 2.x, ya que será un poco confuso para aquellos que nunca han usado 3.x. Sin embargo, debería darle una idea de algunas de las bondades que trae 3.x.
>>> from __future__ import print_function
>>> for i in xrange(20):
... print('a', end='')
...
aaaaaaaaaaaaaaaaaaaa>>>
"".join(...)
lugar.
+=
en Python es una operación de tiempo constante para la concatenación de un solo carácter.
Desde PEP 3105: imprimir como una función en el documento What's New in Python 2.6 :
>>> from __future__ import print_function
>>> print('a', end='')
Obviamente, eso solo funciona con python 3.0 o superior (o 2.6+ con un from __future__ import print_function
al principio). La print
declaración fue eliminada y se convirtió en la print()
función por defecto en Python 3.0.
Puede suprimir el espacio imprimiendo una cadena vacía para stdout entre las print
declaraciones.
>>> import sys
>>> for i in range(20):
... print 'a',
... sys.stdout.write('')
...
aaaaaaaaaaaaaaaaaaaa
Sin embargo, una solución más limpia es construir primero la cadena completa que desea imprimir y luego generarla con una sola print
declaración.
sys.stdout.write()
es más conveniente en este caso. Sin embargo, quería mostrar que escribir una cadena vacía en stdout suprime el espacio entre los elementos escritos usando print
, lo que podría ser útil en situaciones similares.
Puede imprimir un carácter de retroceso ( '\b'
):
for i in xrange(20):
print '\ba',
resultado:
aaaaaaaaaaaaaaaaaaaa
Si desea que aparezcan uno a la vez, puede hacer esto:
import time
import sys
for i in range(20):
sys.stdout.write('a')
sys.stdout.flush()
time.sleep(0.5)
sys.stdout.flush()
Es necesario forzar la escritura del carácter cada vez que se ejecuta el bucle.
Solo como una nota al margen:
La impresión es O (1) pero la construcción de una cadena y luego la impresión es O (n), donde n es el número total de caracteres en la cadena. Entonces sí, mientras que construir la cadena es "más limpia", no es el método más eficiente para hacerlo.
La forma en que lo haría es la siguiente:
from sys import stdout
printf = stdout.write
Ahora tiene una "función de impresión" que imprime cualquier cadena que le dé sin devolver el nuevo carácter de línea cada vez.
printf("Hello,")
printf("World!")
La salida será: ¡Hola, mundo!
Sin embargo, si desea imprimir números enteros, flotantes u otros valores que no sean cadenas, deberá convertirlos en una cadena con la función str ().
printf(str(2) + " " + str(4))
La salida será: 2 4
esto es realmente simple
para las versiones de Python 3+ solo tienes que escribir los siguientes códigos
for i in range(20):
print('a',end='')
solo convierta el bucle a los siguientes códigos, no tiene que preocuparse por otras cosas
¡¡¡GUAU!!!
Es bastante mucho tiempo atrás
Ahora, en python 3.x será bastante fácil
código:
for i in range(20):
print('a',end='') # here end variable will clarify what you want in
# end of the code
salida:
aaaaaaaaaaaaaaaaaaaa
Más información sobre la función print ()
print(value1,value2,value3,sep='-',end='\n',file=sys.stdout,flush=False)
Aquí :
value1,value2,value3
puedes imprimir múltiples valores usando comas
sep = '-'
3 valores estarán separados por el carácter '-'
puede usar cualquier carácter en lugar de esa cadena uniforme como sep = '@' o sep = 'good'
end='\n'
de forma predeterminada, la función de impresión coloca el carácter '\ n' al final de la salida
pero puede usar cualquier carácter o cadena cambiando el valor de la variable final
como end = '$' o end = '.' o end = 'Hola'
file=sys.stdout
este es un valor predeterminado, salida estándar del sistema
usando este argumento puede crear una secuencia de archivo de salida como
print("I am a Programmer", file=open("output.txt", "w"))
por este código va a crear un archivo llamado salida.txt donde su salida Soy un programador se almacenará
flush = False
Es un valor predeterminado que usa flush = True , puede eliminar el flujo a la fuerza
"".join("a" for i in xrange(20))
. (Es mucho más flexible que solo hacerlo"a" * 20
, ya que supongo que es un ejemplo simplificado).