Question Comment imprimer sans nouvelle ligne ou espace?


La question est dans le titre.

J'aimerais le faire en . Ce que je voudrais faire dans cet exemple :

#include <stdio.h>

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

Sortie:

..........

En Python:

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

En Python print ajoutera un \n ou un espace, comment puis-je éviter cela? Maintenant, c'est juste un exemple. Ne me dites pas que je peux d'abord construire une chaîne puis l'imprimer. Je voudrais savoir comment "ajouter" des chaînes à stdout.


1367
2018-01-29 20:58


origine


Réponses:


Manière générale

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

Vous devrez peut-être également appeler

sys.stdout.flush()

s'assurer stdout est rincé immédiatement.

Python 2.6+

À partir de Python 2.6, vous pouvez importer print fonction de Python 3:

from __future__ import print_function

Cela vous permet d'utiliser la solution Python 3 ci-dessous.

Python 3

En Python 3, le print déclaration a été changée en fonction. En Python 3, vous pouvez plutôt faire:

print('.', end='')

Cela fonctionne également dans Python 2, à condition que vous ayez utilisé from __future__ import print_function.

Si vous rencontrez des problèmes avec la mise en mémoire tampon, vous pouvez vider la sortie en ajoutant flush=True argument mot-clé:

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

1887
2018-01-29 21:01



Il devrait être aussi simple que décrit à ce lien par Guido Van Rossum:

Re: Comment est-ce qu'on imprime sans c / r?

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

Est-il possible d'imprimer quelque chose mais pas automatiquement   retour chariot ajouté à elle?

Oui, ajoutez une virgule après le dernier argument à imprimer. Par exemple, cette boucle imprime les nombres 0..9 sur une ligne séparée par des espaces. Remarque l'impression sans paramètre qui ajoute le retour à la ligne 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



Note: Le titre de cette question était quelque chose comme "Comment imprimer en python?"

Puisque les gens peuvent venir ici en cherchant le titre, Python prend également en charge la substitution de style 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

Et, vous pouvez facilement multiplier les valeurs de chaîne:

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

158
2018-01-29 21:24



Utilisez la fonction d'impression de style python3 pour python2.6 + (va également briser toutes les déclarations d'impression mot-clé existantes dans le même fichier.)

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

Pour ne pas ruiner tous vos mots-clés d'impression python2, créez un printf.py fichier

# printf.py

from __future__ import print_function

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

Ensuite, utilisez-le dans votre fichier

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

Plus d'exemples montrant le style printf

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

85
2018-02-21 20:50



Ce n'est pas la réponse à la question dans le titre, mais c'est la réponse sur comment imprimer sur la même ligne:

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

37
2017-12-03 17:16



Le nouveau (à partir de Python 3.0) print fonction a une option end paramètre qui vous permet de modifier le caractère de fin. Il y a aussi sep pour séparateur.


21
2018-01-29 21:07



Vous pouvez simplement ajouter , à la fin de print Fonctionne donc il ne sera pas imprimé sur une nouvelle ligne.


16
2017-07-10 19:45



Utiliser functools.partial pour créer une nouvelle fonction appelée printf

>>> import functools

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

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

Un moyen facile d'envelopper une fonction avec les paramètres par défaut.


14
2018-06-17 01:55



print fonction dans python génère automatiquement une nouvelle ligne. Tu pourrais essayer:

print("Hello World", end="")


14
2018-03-14 19:17



Code pour Python 3.6.1

for i in range(0,10): print('.' , end="")

Sortie

..........
>>>

9
2018-04-03 17:14