Tengo este codigo:
>>> for i in xrange(20):
... print 'a',
...
a a a a a a a a a a a a a a a a a a a a
Quiero dar salida 'a'
, sin ' '
esto:
aaaaaaaaaaaaaaaaaaaa
¿Es posible?
python
string
printing
python-2.x
pythonFoo
fuente
fuente
"".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).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).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.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 20a
s.Python 3 cambia la
print
declaración en una función print () , que le permite establecer unend
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.fuente
"".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 :
Obviamente, eso solo funciona con python 3.0 o superior (o 2.6+ con un
from __future__ import print_function
al principio). Laprint
declaración fue eliminada y se convirtió en laprint()
función por defecto en Python 3.0.fuente
Puede suprimir el espacio imprimiendo una cadena vacía para stdout entre las
print
declaraciones.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.fuente
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 usandoprint
, lo que podría ser útil en situaciones similares.Puede imprimir un carácter de retroceso (
'\b'
):resultado:
fuente
Python 3.x:
Python 2.6 o 2.7:
fuente
Si desea que aparezcan uno a la vez, puede hacer esto:
sys.stdout.flush()
Es necesario forzar la escritura del carácter cada vez que se ejecuta el bucle.fuente
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:
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.
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 ().
La salida será: 2 4
fuente
O lo que dice Ant , o se acumula en una cadena, luego imprime una vez:
fuente
¿sin que? Quieres decir
?
fuente
esto es realmente simple
para las versiones de Python 3+ solo tienes que escribir los siguientes códigos
solo convierta el bucle a los siguientes códigos, no tiene que preocuparse por otras cosas
fuente
¡¡¡GUAU!!!
Es bastante mucho tiempo atrás
Ahora, en python 3.x será bastante fácil
código:
salida:
Más información sobre la función print ()
Aquí :
puedes imprimir múltiples valores usando comas
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'
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'
este es un valor predeterminado, salida estándar del sistema
usando este argumento puede crear una secuencia de archivo de salida como
por este código va a crear un archivo llamado salida.txt donde su salida Soy un programador se almacenará
Es un valor predeterminado que usa flush = True , puede eliminar el flujo a la fuerza
fuente
Tan sencillo como eso
fuente