Pregunta Cómo imprimir sin nueva línea o espacio?


La pregunta está en el título.

Me gustaría hacerlo en . Lo que me gustaría hacer en este ejemplo en :

#include <stdio.h>

int main() {
    int i;
    for (i=0; i<10; i++) printf(".");
    return 0;
}

Salida:

..........

En Python:

>>> for i in xrange(0,10): print '.'
.
.
.
.
.
.
.
.
.
.
>>> for i in xrange(0,10): print '.',
. . . . . . . . . .

En Python print agregará un \n o un espacio, ¿cómo puedo evitar eso? Ahora, es solo un ejemplo. No me diga que primero puedo construir una cadena y luego imprimirla. Me gustaría saber cómo "agregar" cadenas para stdout.


1367
2018-01-29 20:58


origen


Respuestas:


Manera general

import sys
sys.stdout.write('.')

Es posible que también deba llamar

sys.stdout.flush()

para asegurar stdout se enjuaga inmediatamente.

Python 2.6+

Desde Python 2.6 puedes importar el print función de Python 3:

from __future__ import print_function

Esto le permite usar la solución Python 3 a continuación.

Python 3

En Python 3, el print declaración ha sido cambiada a una función. En Python 3, puedes hacer:

print('.', end='')

Esto también funciona en Python 2, siempre que hayas usado from __future__ import print_function.

Si tiene problemas con el almacenamiento en búfer, puede purgar la salida agregando flush=True argumento de palabra clave:

print('.', end='', flush=True)

1887
2018-01-29 21:01



Debería ser tan simple como lo describe Guido Van Rossum en este enlace:

Re: ¿Cómo se imprime sin c / r?

http://legacy.python.org/search/hypermail/python-1992/0115.html

¿Es posible imprimir algo pero no tener automáticamente una   retorno de carro adjunto a ella?

Sí, agregue una coma después del último argumento para imprimir. Por ejemplo, este ciclo imprime los números 0..9 en una línea separada por espacios. Nota la "impresión" sin parámetros que agrega la nueva línea final:

>>> for i in range(10):
...     print i,
... else:
...     print
...
0 1 2 3 4 5 6 7 8 9
>>> 

271
2017-07-27 10:09



Nota: El título de esta pregunta solía ser algo así como "Cómo imprimir en python?"

Dado que las personas pueden venir a buscarlo en función del título, Python también admite la sustitución de estilo printf:

>>> strings = [ "one", "two", "three" ]
>>>
>>> for i in xrange(3):
...     print "Item %d: %s" % (i, strings[i])
...
Item 0: one
Item 1: two
Item 2: three

Y, puedes fácilmente multiplicar valores de cadena:

>>> print "." * 10
..........

158
2018-01-29 21:24



Utilice la función de impresión de estilo python3 para python2.6 + (también romperá cualquier declaración impresa por clave existente en el mismo archivo).

# for python2 to use the print() function, removing the print keyword
from __future__ import print_function
for x in xrange(10):
    print('.', end='')

Para no arruinar todas las palabras clave de impresión de python2, crea una printf.py archivo

# printf.py

from __future__ import print_function

def printf(str, *args):
    print(str % args, end='')

Luego, úsalo en tu archivo

from printf import printf
for x in xrange(10):
    printf('.')
print 'done'
#..........done

Más ejemplos que muestran el estilo printf

printf('hello %s', 'world')
printf('%i %f', 10, 3.14)
#hello world10 3.140000

85
2018-02-21 20:50



Esta no es la respuesta a la pregunta en el título, pero es la respuesta sobre cómo imprimir en la misma línea:

import sys
for i in xrange(0,10):
   sys.stdout.write(".")
   sys.stdout.flush()

37
2017-12-03 17:16



Lo nuevo (a partir de Python 3.0) print la función tiene un opcional end parámetro que le permite modificar el carácter final. También hay sep para separador


21
2018-01-29 21:07



Puedes simplemente agregar , En el fin de print función para que no se imprima en una nueva línea.


16
2017-07-10 19:45



Usando functools.partial para crear una nueva función llamada printf

>>> import functools

>>> printf = functools.partial(print, end="")

>>> printf("Hello world\n")
Hello world

Forma fácil de ajustar una función con parámetros predeterminados.


14
2018-06-17 01:55