De vraag zit in de titel.
Ik wil het graag doen in [tag:Python]. Wat ik in dit voorbeeld zou willen doen in [tag:C]:
In C:
#include <stdio.h>
int main() {
int i;
for (i=0; i<10; i++) printf(".");
return 0;
}
Uitvoer:
..........
In Python:
>>> for i in xrange(0,10): print '.'
.
.
.
.
.
.
.
.
.
.
>>> for i in xrange(0,10): print '.',
. . . . . . . . . .
In Python zal print
een spatie
of spatie toevoegen, hoe kan ik dat voorkomen? Nu, het'is maar een voorbeeld. Vertel me niet dat ik eerst een string kan maken en die dan kan printen. Ik'zou graag willen weten hoe ik strings kan toevoegen aan stdout
.
import sys
sys.stdout.write('.')
Misschien moet u ook bellen naar
sys.stdout.flush()
om ervoor te zorgen dat stdout
onmiddellijk wordt doorgespoeld.
Vanaf Python 2.6 kun je de print
functie van Python 3 importeren:
from __future__ import print_function
Hierdoor kunt u de onderstaande Python 3 oplossing gebruiken.
In Python 3, is het print
statement veranderd in een functie. In Python 3, kunt u in plaats daarvan doen:
print('.', end='')
Dit werkt ook in Python 2, mits je from __future__ import print_function
hebt gebruikt.
Als je problemen hebt met bufferen, kun je de uitvoer doorspoelen door flush=True
keyword argument toe te voegen:
print('.', end='', flush=True)
Merk echter op dat het flush
sleutelwoord niet beschikbaar is in de versie van de print
functie geïmporteerd uit __future__
in Python 2; het werkt alleen in Python 3, meer specifiek 3.3 en later. In eerdere versies zult u nog steeds handmatig moeten spoelen met een oproep aan sys.stdout.flush()
.
Note: De titel van deze vraag was eerst iets als "Hoe printf in python?"
Omdat mensen hier misschien komen zoeken op basis van de titel, ondersteunt Python ook printf-stijl substitutie:
>>> 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
En, je kunt gemakkelijk string-waarden vermenigvuldigen:
>>> print "." * 10
..........
De nieuwe (vanaf Python 3.0) print
functie heeft een optionele end
parameter waarmee je het eindkarakter kunt aanpassen. Er is ook sep
voor scheidingsteken.