Me gustaría hacerlo en pitón. Lo que me gustaría hacer en este ejemplo enC:
C ª:
#include <stdio.h>
int main() {
int i;
for (i=0; i<10; i++) printf(".");
return 0;
}
Salida:
..........
En Python:
>>> for i in range(10): print('.')
.
.
.
.
.
.
.
.
.
.
>>> print('.', '.', '.', '.', '.', '.', '.', '.', '.', '.')
. . . . . . . . . .
En Python print
agregará un \n
espacio o, ¿cómo puedo evitar eso? Ahora, es solo un ejemplo, no me digas que primero puedo construir una cadena y luego imprimirla. Me gustaría saber cómo "agregar" cadenas a stdout
.
Respuestas:
En Python 3, puede usar los parámetros
sep=
yend=
de laprint
función:Para no agregar una nueva línea al final de la cadena:
Para no agregar un espacio entre todos los argumentos de la función que desea imprimir:
Puede pasar cualquier cadena a cualquiera de los parámetros, y puede usar ambos parámetros al mismo tiempo.
Si tiene problemas con el almacenamiento en búfer, puede vaciar el resultado agregando
flush=True
argumentos de palabras clave:Python 2.6 y 2.7
Desde Python 2.6 puede importar la
print
función desde Python 3 usando el__future__
módulo :que le permite usar la solución Python 3 anterior.
Sin embargo, tenga en cuenta que la
flush
palabra clave no está disponible en la versión de laprint
función importada de__future__
Python 2; solo funciona en Python 3, más específicamente 3.3 y versiones posteriores. En versiones anteriores, aún deberá enjuagarse manualmente con una llamada asys.stdout.flush()
. También tendrá que volver a escribir todas las demás declaraciones de impresión en el archivo donde realiza esta importación.O puedes usar
sys.stdout.write()
También puede necesitar llamar
para asegurarse de que
stdout
se enjuague inmediatamente.fuente
flush
y qué hace realmente?Debería ser tan simple como se describe en este enlace por Guido Van Rossum:
Re: ¿Cómo se imprime sin ac / r?
http://legacy.python.org/search/hypermail/python-1992/0115.html
Sí, agregue una coma después del último argumento para imprimir. Por ejemplo, este bucle imprime los números 0..9 en una línea separada por espacios. Tenga en cuenta la "impresión" sin parámetros que agrega la nueva línea final:
fuente
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:
Y puede multiplicar fácilmente los valores de cadena:
fuente
Utilice la función de impresión de estilo python3 para python2.6 + (también romperá las declaraciones de impresión con palabras clave existentes en el mismo archivo).
Para no arruinar todas sus palabras clave de impresión python2, cree un
printf.py
archivo separadoLuego, úsalo en tu archivo
Más ejemplos que muestran estilo printf
fuente
Cómo imprimir en la misma línea:
fuente
La nueva función (a partir de Python 3.x)
print
tiene unend
parámetro opcional que le permite modificar el carácter final:Salida:
También hay
sep
para separador:Salida:
Si desea utilizar esto en Python 2.x simplemente agregue esto al comienzo de su archivo:
from __future__ import print_function
fuente
Usando functools.partial para crear una nueva función llamada printf
Manera fácil de ajustar una función con parámetros predeterminados.
fuente
Simplemente puede agregar
,
al final de laprint
función para que no se imprima en una nueva línea.fuente
En Python 3+,
print
es una función. Cuando usted llamaPython lo traduce a
Puedes cambiar
end
a lo que quieras.fuente
Python 2.6+ :
pitón 3 :
python <= 2.5 :
si el espacio adicional está bien después de cada impresión, en python 2
engañoso en python 2 - evite :
fuente
Puedes probar:
fuente
Puede hacer lo mismo en python3 de la siguiente manera:
y ejecutarlo con
python filename.py
opython3 filename.py
fuente
recientemente tuve el mismo problema..
Lo resolví haciendo:
esto funciona tanto en Unix como en Windows ... no lo he probado en macosx ...
hth
fuente
sys.__stdout__
@lenooh satisfizo mi consulta. Descubrí este artículo mientras buscaba 'python suprimir nueva línea'. Estoy usando IDLE3 en Raspberry Pi para desarrollar Python 3.2 para PuTTY. Quería crear una barra de progreso en la línea de comando PuTTY. No quería que la página se desplazara. Quería una línea horizontal para asegurarle al usuario que se volviera loco de que el programa no se ha detenido ni se ha enviado a almorzar en un alegre bucle infinito, como una súplica para que me deje, lo estoy haciendo bien, pero esto puede llevar algo de tiempo. mensaje interactivo: como una barra de progreso en el texto.
El
print('Skimming for', search_string, '\b! .001', end='')
inicializa el mensaje mediante la preparación para la siguiente pantalla-escritura, que imprimirá tres teclas de retroceso como ⌫⌫⌫ rubout y después de un período, limpiando off '001' y que se extiende la línea de períodos. Después desearch_string
la entrada del usuario de los loros,\b!
recorta el signo de exclamación de misearch_string
texto para retroceder sobre el espacio que deprint()
otro modo fuerza, colocando correctamente la puntuación. Eso es seguido por un espacio y el primer 'punto' de la 'barra de progreso' que estoy simulando. Innecesariamente, el mensaje también se imprime con el número de página (formateado en una longitud de tres con ceros a la izquierda) para que el usuario tenga en cuenta que el progreso se está procesando y que también reflejará el recuento de períodos que luego desarrollaremos en el Derecha.La barra de progreso carne está en la
sys.stdout.write('\b\b\b.'+format(page, '03'))
línea. Primero, para borrar a la izquierda, hace una copia de seguridad del cursor sobre los tres caracteres numéricos con el '\ b \ b \ b' como ⌫⌫⌫ rubout y suelta un nuevo punto para agregar a la longitud de la barra de progreso. Luego escribe tres dígitos de la página que ha progresado hasta ahora. Comosys.stdout.write()
espera a que se cierre un búfer completo o que se cierre el canal de salida,sys.stdout.flush()
fuerza la escritura inmediata.sys.stdout.flush()
está integrado en el final delprint()
cual se pasa por altoprint(txt, end='' )
. Luego, el código recorre sus operaciones intensivas de tiempo mundano mientras no imprime nada más hasta que vuelve aquí para borrar tres dígitos, agregar un punto y escribir tres dígitos nuevamente, incrementado.Los tres dígitos borrados y reescritos no son de ninguna manera necesarios, es solo una floritura que ejemplifica
sys.stdout.write()
versusprint()
. Podrías cebar fácilmente con un punto y olvidarte de los tres sofisticados espacios de barra invertida-b ⌫ (por supuesto, no escribir también los recuentos de páginas formateadas) simplemente imprimiendo la barra de períodos más de una en una cada vez, sin espacios ni líneas nuevas usando solo elsys.stdout.write('.'); sys.stdout.flush()
par.Tenga en cuenta que el shell Python de Raspberry Pi IDLE3 no respeta el espacio de retroceso como ⌫ rubout, sino que imprime un espacio, creando en su lugar una lista aparente de fracciones.
- (o = 8> wiz
fuente
Notará que todas las respuestas anteriores son correctas. Pero quería hacer un atajo para escribir siempre el parámetro "end = ''" al final.
Podrías definir una función como
Aceptaría toda la cantidad de parámetros. Incluso aceptará todos los demás parámetros como archivo, vaciado, etc. y con el mismo nombre.
fuente
*arg
está al principio (python 2.7), y ponerlo al final se ejecutó, pero no funcionó completamente bien. Definí una función que solo tomóPrint(*args)
, y luego simplemente llamé imprimir consep='', end=''
. Y ahora funciona como quiero. Entonces uno votó por la idea.Muchas de estas respuestas parecen un poco complicadas. En Python 3.x simplemente haces esto:
El valor predeterminado de end es
"\n"
. Simplemente lo estamos cambiando a un espacio o también puede usarend=""
(sin espacio) para hacer lo queprintf
normalmente hace.fuente
desea imprimir algo en el bucle correcto, pero no quiere que se imprima en una nueva línea cada vez ... por ejemplo:
pero quieres que se imprima de esta manera: hola hola hola hola hola ¿verdad ???? simplemente agregue una coma después de imprimir "hola"
Ejemplo:
for i in range (0,5): print "hi", OUTPUT: hi hi hi hi hi
fuente
O tener una función como:
Entonces ahora:
Salidas:
fuente
Esto funcionó tanto en 2.7.8 como en 2.5.2 (Canopy y terminal OSX, respectivamente): no se requieren importaciones de módulos ni viajes en el tiempo.
fuente
sys.stdout.isatty()
si no se redirige a un archivo.Hay dos formas generales de hacer esto:
Imprimir sin nueva línea en Python 3.x
No agregue nada después de la declaración de impresión y elimine '\ n' usando
end=''
como:Otro ejemplo en bucle :
Imprimir sin nueva línea en Python 2.x
Agregar una coma final dice que después de imprimir ignore
\n
.Otro ejemplo en bucle :
Espero que esto te ayudará. Puedes visitar este enlace .
fuente
end=" "
por ejemplo: print ('hello', end = '' "); print ('world')print 'hello' ;print'there'
en paiza.io/projects/e/35So9iUPfMdIORGzJTb2NQ... no necesita importar ninguna biblioteca. Solo usa el caracter de borrar:
Esto elimina la nueva línea y el espacio (^ _ ^) *
fuente