Antworten:
Es gibt verschiedene Möglichkeiten, um Ihr Ergebnis zu erzielen. Wenn Sie nur eine Lösung für Ihren Fall suchen , verwenden Sie die Zeichenfolgenmultiplikation als @ Ant- Erwähnungen. Dies funktioniert nur, wenn jede Ihrer print
Anweisungen dieselbe Zeichenfolge druckt. Beachten Sie, dass es für die Multiplikation einer beliebigen Zeichenfolge 'foo' * 20
funktioniert (z . B. funktioniert).
>>> print 'a' * 20
aaaaaaaaaaaaaaaaaaaa
Wenn Sie dies im Allgemeinen tun möchten, bauen Sie eine Zeichenfolge auf und drucken Sie sie einmal aus. Dies verbraucht etwas Speicherplatz für die Zeichenfolge, ruft jedoch nur einen einzigen Aufruf auf print
. Beachten Sie, dass die Verkettung +=
von Zeichenfolgen in der Größe der zu verkettenden Zeichenfolge jetzt linear ist, sodass dies schnell geht.
>>> for i in xrange(20):
... s += 'a'
...
>>> print s
aaaaaaaaaaaaaaaaaaaa
Oder Sie können es direkter mit sys.stdout tun . write () , die print
eine Hülle um ist. Dadurch wird nur die von Ihnen angegebene Rohzeichenfolge ohne Formatierung geschrieben. Beachten Sie, dass auch am Ende der 20 a
s keine neue Zeile gedruckt wird .
>>> import sys
>>> for i in xrange(20):
... sys.stdout.write('a')
...
aaaaaaaaaaaaaaaaaaaa>>>
Python 3 ändert die print
Anweisung in eine print () - Funktion , mit der Sie einen end
Parameter festlegen können . Sie können es in> = 2.6 verwenden, indem Sie aus importieren __future__
. Ich würde dies jedoch in jedem ernsthaften 2.x-Code vermeiden, da es für diejenigen, die 3.x noch nie verwendet haben, etwas verwirrend sein wird. Es sollte Ihnen jedoch einen Vorgeschmack auf einige der Vorteile geben, die 3.x mit sich bringt.
>>> from __future__ import print_function
>>> for i in xrange(20):
... print('a', end='')
...
aaaaaaaaaaaaaaaaaaaa>>>
"".join(...)
stattdessen.
+=
in Python ist eine konstante Zeitoperation für die Verkettung eines einzelnen Zeichens.
Ab PEP 3105: Drucken als Funktion im Dokument Was ist neu in Python 2.6 :
>>> from __future__ import print_function
>>> print('a', end='')
Offensichtlich funktioniert das nur mit Python 3.0 oder höher (oder 2.6+ mit einem from __future__ import print_function
am Anfang). Die print
Anweisung wurde entfernt und wurde print()
standardmäßig zur Funktion in Python 3.0.
Sie können das Leerzeichen unterdrücken, indem Sie eine leere Zeichenfolge zwischen den print
Anweisungen drucken .
>>> import sys
>>> for i in range(20):
... print 'a',
... sys.stdout.write('')
...
aaaaaaaaaaaaaaaaaaaa
Eine sauberere Lösung besteht jedoch darin, zuerst die gesamte Zeichenfolge zu erstellen, die Sie drucken möchten, und sie dann mit einer einzelnen print
Anweisung auszugeben .
sys.stdout.write()
ist in diesem Fall bequemer. Ich wollte jedoch zeigen, dass das Schreiben einer leeren Zeichenfolge in stdout den Abstand zwischen Elementen unterdrückt, die mit geschrieben wurden print
, was in ähnlichen Situationen nützlich sein kann.
Sie können ein Rücktastezeichen ( '\b'
) drucken :
for i in xrange(20):
print '\ba',
Ergebnis:
aaaaaaaaaaaaaaaaaaaa
Wenn Sie möchten, dass sie einzeln angezeigt werden, können Sie Folgendes tun:
import time
import sys
for i in range(20):
sys.stdout.write('a')
sys.stdout.flush()
time.sleep(0.5)
sys.stdout.flush()
ist erforderlich, um zu erzwingen, dass das Zeichen bei jedem Ausführen der Schleife geschrieben wird.
Nur als Randnotiz:
Das Drucken ist O (1), aber das Erstellen einer Zeichenfolge und das Drucken ist O (n), wobei n die Gesamtzahl der Zeichen in der Zeichenfolge ist. Also ja, während das Erstellen des Strings "sauberer" ist, ist es nicht die effizienteste Methode, dies zu tun.
Ich würde es so machen:
from sys import stdout
printf = stdout.write
Jetzt haben Sie eine "Druckfunktion", die jede Zeichenfolge druckt, die Sie ihr geben, ohne jedes Mal das neue Zeilenzeichen zurückzugeben.
printf("Hello,")
printf("World!")
Die Ausgabe lautet: Hallo Welt!
Wenn Sie jedoch Ganzzahlen, Gleitkommazahlen oder andere Nicht-Zeichenfolgenwerte drucken möchten, müssen Sie diese mit der Funktion str () in eine Zeichenfolge konvertieren.
printf(str(2) + " " + str(4))
Die Ausgabe ist: 2 4
das ist wirklich einfach
Für Python 3+ -Versionen müssen Sie nur die folgenden Codes schreiben
for i in range(20):
print('a',end='')
Konvertieren Sie einfach die Schleife in die folgenden Codes, Sie müssen sich nicht um andere Dinge kümmern
BEEINDRUCKEND!!!
Es ist ziemlich lange her
In Python 3.x wird es jetzt ziemlich einfach sein
Code:
for i in range(20):
print('a',end='') # here end variable will clarify what you want in
# end of the code
Ausgabe:
aaaaaaaaaaaaaaaaaaaa
Weitere Informationen zur Funktion print ()
print(value1,value2,value3,sep='-',end='\n',file=sys.stdout,flush=False)
Hier :
value1,value2,value3
Sie können mehrere Werte mit Kommas drucken
sep = '-'
3 Werte werden durch '-' getrennt
Sie können ein beliebiges Zeichen anstelle dieser geraden Zeichenfolge wie sep = '@' oder sep = 'good' verwenden.
end='\n'
Standardmäßig setzen Sie die Druckfunktion '\ n' am Ende der Ausgabe
Sie können jedoch ein beliebiges Zeichen oder eine beliebige Zeichenfolge verwenden, indem Sie den Wert end variale ändern
wie end = '$' oder end = '.' oder end = 'Hallo'
file=sys.stdout
Dies ist ein Standardwert, Systemstandardausgabe
Mit diesem Argument können Sie einen Ausgabedateistream wie erstellen
print("I am a Programmer", file=open("output.txt", "w"))
Mit diesem Code erstellen Sie eine Datei mit dem Namen output.txt, in der Ihre Ausgabe als Programmierer gespeichert wird
flush = False
Dies ist ein Standardwert mit flush = True. Sie können den Stream zwangsweise leeren
"".join("a" for i in xrange(20))
. (Es ist viel flexibler als nur zu tun"a" * 20
, da ich davon ausgehe, dass es ein vereinfachtes Beispiel ist).