Το ερώτημα βρίσκεται στον τίτλο.
Θα ήθελα να το κάνω σε [tag:Python]. Αυτό που θα ήθελα να κάνω σε αυτό το παράδειγμα σε [tag:C]:
Σε C:
#include <stdio.h>
int main() {
int i;
for (i=0; i<10; i++) printf(".");
return 0;
}
Έξοδος:
..........
Σε Python:
>>> for i in xrange(0,10): print '.'
.
.
.
.
.
.
.
.
.
.
>>> for i in xrange(0,10): print '.',
. . . . . . . . . .
Στην Python το print
θα προσθέσει ένα \n
ή ένα κενό, πώς μπορώ να το αποφύγω αυτό; Τώρα, είναι απλά ένα παράδειγμα. Μην μου πείτε ότι μπορώ πρώτα να φτιάξω ένα αλφαριθμητικό και μετά να το εκτυπώσω. Θα ήθελα να ξέρω πώς να "προσαρτώ" συμβολοσειρές στο stdout
.
import sys
sys.stdout.write('.')
Μπορεί επίσης να χρειαστεί να καλέσετε
sys.stdout.flush()
για να διασφαλίσετε ότι το stdout
θα ξεπλυθεί αμέσως.
Από την Python 2.6 μπορείτε να εισάγετε τη συνάρτηση print
από την Python 3:
from __future__ import print_function
Αυτό σας επιτρέπει να χρησιμοποιήσετε την παρακάτω λύση της Python 3.
Στην Python 3, η δήλωση print
έχει μετατραπεί σε συνάρτηση. Στην Python 3, μπορείτε να κάνετε:
print('.', end='')
Αυτό λειτουργεί και στην Python 2, με την προϋπόθεση ότι έχετε χρησιμοποιήσει την from __future__ import print_function
.
Αν έχετε πρόβλημα με τη ρυθμιστική μνήμη, μπορείτε να ξεπλύνετε την έξοδο προσθέτοντας το όρισμα της λέξης-κλειδί flush=True
:
print('.', end='', flush=True)
Ωστόσο, σημειώστε ότι η λέξη-κλειδί flush
δεν είναι διαθέσιμη στην έκδοση της συνάρτησης print
που εισάγεται από την __future__
στην Python 2. Λειτουργεί μόνο στην Python 3, πιο συγκεκριμένα στην έκδοση 3.3 και μεταγενέστερες. Σε προηγούμενες εκδόσεις θα πρέπει να κάνετε χειροκίνητη έκπλυση με μια κλήση στην sys.stdout.flush()
.
Σημείωση: Ο τίτλος αυτής της ερώτησης συνήθιζε να είναι κάτι σαν "Πώς να εκτυπώσετε την printf στην python; "
Δεδομένου ότι οι άνθρωποι μπορεί να έρθουν εδώ ψάχνοντας με βάση τον τίτλο, η Python υποστηρίζει επίσης αντικατάσταση τύπου 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
Και, μπορείτε εύκολα να πολλαπλασιάσετε τιμές συμβολοσειρών:
>>> print "." * 10
..........
Η νέα (από την Python 3.0) συνάρτηση print
έχει μια προαιρετική παράμετρο end
που σας επιτρέπει να τροποποιήσετε τον χαρακτήρα λήξης. Υπάρχει επίσης η sep
για το διαχωριστικό.