Vraag Hoe te printen zonder newline of spatie?


De vraag zit in de titel.

Ik zou het graag willen doen . Wat ik zou willen doen in dit voorbeeld in :

#include <stdio.h>

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

Output:

..........

In Python:

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

In Python print zal een toevoegen \n of een spatie, hoe kan ik dat vermijden? Nu, het is maar een voorbeeld. Vertel me niet dat ik eerst een string kan bouwen en het vervolgens kan afdrukken. Ik zou graag willen weten hoe ik strings kan "toevoegen" stdout.


1367
2018-01-29 20:58


oorsprong


antwoorden:


Algemene manier

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

U moet misschien ook bellen

sys.stdout.flush()

verzekeren stdout wordt onmiddellijk gespoeld.

Python 2.6+

Vanaf Python 2.6 kunt u het importeren print functie van Python 3:

from __future__ import print_function

Hiermee kunt u de onderstaande Python 3-oplossing gebruiken.

Python 3

In Python 3, de print verklaring is veranderd in een functie. In Python 3 kun je in plaats daarvan:

print('.', end='')

Dit werkt ook in Python 2, op voorwaarde dat je het hebt gebruikt from __future__ import print_function.

Als u problemen ondervindt met buffering, kunt u de uitvoer spoelen door deze toe te voegen flush=True trefwoord argument:

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

1887
2018-01-29 21:01



Het moet zo eenvoudig zijn als beschreven op deze link van Guido Van Rossum:

Re: Hoe print je zonder een c / r?

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

Is het mogelijk om iets af te drukken maar niet automatisch een   carriage return er aan toegevoegd?

Ja, voeg een komma toe na het laatste argument dat u wilt afdrukken. Bijvoorbeeld, deze lus print de nummers 0..9 op een regel gescheiden door spaties. Notitie de parameterloze "print" die de laatste nieuwe regel toevoegt:

>>> 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



Opmerking: de titel van deze vraag was zoiets als "Hoe druk ik af in python?"

Omdat mensen hier naar kunnen zoeken op basis van de titel, ondersteunt Python ook printf-achtige vervanging:

>>> 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 u kunt veelvoudige tekenreekswaarden vermenigvuldigen:

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

158
2018-01-29 21:24



Gebruik de python3-achtige afdrukfunctie voor python2.6 + (breekt ook bestaande bestaande uitgeprinte instructies in hetzelfde bestand.)

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

Om niet al uw Python2-zoekwoorden te verpesten, maakt u een afzonderlijke printf.py het dossier

# printf.py

from __future__ import print_function

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

Gebruik het dan in uw bestand

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

Meer voorbeelden van printfiguren

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

85
2018-02-21 20:50



Dit is niet het antwoord op de vraag in de titel, maar het is het antwoord op hoe je op dezelfde regel kunt afdrukken:

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

37
2017-12-03 17:16



Het nieuwe (vanaf Python 3.0) print functie heeft een optionele end parameter waarmee u het eindteken kunt wijzigen. Er is ook sep voor scheidingsteken.


21
2018-01-29 21:07



Je kunt gewoon toevoegen , aan het eind van print functie zodat het niet op een nieuwe regel zal afdrukken.


16
2017-07-10 19:45



Gebruik de functie functools.partial om een ​​nieuwe functie met de naam printf te maken

>>> import functools

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

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

Gemakkelijke manier om een ​​functie te wikkelen met standaardparameters.


14
2018-06-17 01:55



print functie in python genereert automatisch een nieuwe regel. Je kan het proberen:

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


14
2018-03-14 19:17