Vprašanje je v naslovu.
To bi rad naredil v [tag:Python]. V tem primeru bi rad naredil v [tag:C]:
V C:
#include <stdio.h>
int main() {
int i;
for (i=0; i<10; i++) printf(".");
return 0;
}
Izhod:
..........
V Pythonu:
>>> for i in xrange(0,10): print '.'
.
.
.
.
.
.
.
.
.
.
>>> for i in xrange(0,10): print '.',
. . . . . . . . . .
V Pythonu print
doda \n
ali presledek, kako se lahko temu izognem? To je le primer. Ne recite mi, da lahko najprej sestavim niz in ga nato natisnem. Rad bi vedel, kako "dodati" niza v stdout
.
import sys
sys.stdout.write('.')
Morda boste morali poklicati tudi
sys.stdout.flush()
da zagotovite, da se stdout
takoj splakne.
Od različice Python 2.6 lahko uvozite funkcijo print
iz Pythona 3:
from __future__ import print_function
Tako lahko uporabite spodnjo rešitev iz Pythona 3.
V Pythonu 3 je izjava print
spremenjena v funkcijo. V Pythonu 3 lahko namesto tega naredite:
print('.', end='')
To deluje tudi v Pythonu 2, če ste uporabili from __future__ import print_function
.
Če imate težave s predpomnilnikom, lahko izpis splaknete tako, da dodate argument ključne besede flush=True
:
print('.', end='', flush=True)
Vendar upoštevajte, da ključna beseda flush
ni na voljo v različici funkcije print
, uvoženi iz __future__`` v Pythonu 2; deluje le v Pythonu 3, natančneje 3.3 in novejših. V prejšnjih različicah boste morali še vedno ročno splakovati s klicem
sys.stdout.flush()`.
Note: Naslov tega vprašanja je bil nekaj podobnega kot "Kako printf v pythonu?"
Ker ljudje morda pridejo sem in iščejo to na podlagi naslova, Python podpira tudi zamenjavo v slogu 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
Poleg tega lahko zlahka pomnožite vrednosti nizov:
>>> print "." * 10
..........
Nova (od različice Python 3.0) funkcija print
ima izbirni parameter end
, ki omogoča spreminjanje končnega znaka. Obstaja tudi sep
za ločilo.