Hoe kan ik printen zonder newline of spatie?
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
.
1749
3
Algemene weg
Misschien moet u ook bellen naar
om ervoor te zorgen dat
stdout
onmiddellijk wordt doorgespoeld.Python 2.6+
Vanaf Python 2.6 kun je de
print
functie van Python 3 importeren:Hierdoor kunt u de onderstaande Python 3 oplossing gebruiken.
Python 3
In Python 3, is het
print
statement veranderd in een functie. In Python 3, kunt u in plaats daarvan doen: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:Merk echter op dat het
flush
sleutelwoord niet beschikbaar is in de versie van deprint
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 aansys.stdout.flush()
.Bronnen
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:
En, je kunt gemakkelijk string-waarden vermenigvuldigen:
De nieuwe (vanaf Python 3.0)
print
functie heeft een optioneleend
parameter waarmee je het eindkarakter kunt aanpassen. Er is ooksep
voor scheidingsteken.