Kako tiskati brez nove vrstice ali presledka?

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.

Rešitev

Splošni način

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

Morda boste morali poklicati tudi

sys.stdout.flush()

da zagotovite, da se stdout takoj splakne.

Python 2.6+

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.

Python 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 klicemsys.stdout.flush()`.

Viri

  1. https://docs.python.org/2/library/functions.html#print
  2. https://docs.python.org/2/library/\__future__.html
  3. https://docs.python.org/3/library/functions.html#print
Komentarji (5)

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
..........
Komentarji (7)

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.

Komentarji (1)