Frage Wie drucke ich ohne Zeilenumbruch oder Leerzeichen?


Die Frage ist im Titel.

Ich würde es gerne machen . Was ich in diesem Beispiel tun möchte :

#include <stdio.h>

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

Ausgabe:

..........

In Python:

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

In Python print wird ein hinzufügen \n oder ein Raum, wie kann ich das vermeiden? Jetzt ist es nur ein Beispiel. Sag mir nicht, ich kann zuerst eine Schnur bauen und dann drucken. Ich würde gerne wissen, wie man Strings anhängen kann stdout.


1367
2018-01-29 20:58


Ursprung


Antworten:


Allgemeiner Weg

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

Möglicherweise müssen Sie auch anrufen

sys.stdout.flush()

sicherstellen stdout wird sofort gespült.

Python 2.6+

Ab Python 2.6 können Sie das importieren print Funktion von Python 3:

from __future__ import print_function

Auf diese Weise können Sie die folgende Python 3-Lösung verwenden.

Python 3

In Python 3, der print Anweisung wurde in eine Funktion geändert. In Python 3 können Sie stattdessen Folgendes tun:

print('.', end='')

Dies funktioniert auch in Python 2, sofern du es benutzt hast from __future__ import print_function.

Wenn Sie Probleme mit der Pufferung haben, können Sie die Ausgabe durch Hinzufügen von löschen flush=True Schlüsselwortargument:

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

1887
2018-01-29 21:01



Es sollte so einfach sein wie unter diesem Link von Guido Van Rossum beschrieben:

Re: Wie druckt man ohne c / r?

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

Ist es möglich etwas zu drucken aber nicht automatisch ein zu haben?   Wagenrücklauf angehängt?

Ja, fügen Sie nach dem letzten zu druckenden Argument ein Komma an. Zum Beispiel, Diese Schleife druckt die Zahlen 0..9 auf einer durch Leerzeichen getrennten Zeile. Hinweis das parameterlose "Drucken", das den letzten Zeilenumbruch hinzufügt:

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



Hinweis: Der Titel dieser Frage war etwas wie "Wie kann ich in Python drucken?"

Da Leute hier nach dem Titel suchen können, unterstützt Python auch die printf-artige Substitution:

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

Und Sie können die String-Werte manuell multiplizieren:

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

158
2018-01-29 21:24



Verwenden Sie die Druckfunktion python3 für python2.6 + (Unterbricht auch alle bereits vorhandenen, bereits geschriebenen Druckanweisungen in derselben Datei.)

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

Um nicht alle python2 print-Schlüsselwörter zu ruinieren, erstellen Sie ein separates printf.py Datei

# printf.py

from __future__ import print_function

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

Dann benutze es in deiner Datei

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

Weitere Beispiele für den printf-Stil

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

85
2018-02-21 20:50



Dies ist nicht die Antwort auf die Frage im Titel, aber es ist die Antwort darauf, wie man in der gleichen Zeile druckt:

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

37
2017-12-03 17:16



Das neue (ab Python 3.0) print Funktion hat ein optionales end Parameter, mit dem Sie das Endzeichen ändern können. Es gibt auch sep für Trennzeichen.


21
2018-01-29 21:07



Sie können einfach hinzufügen , am Ende von print Funktion, so dass es nicht auf neue Zeile gedruckt wird.


16
2017-07-10 19:45



Mit functools.partial erstellen Sie eine neue Funktion namens printf

>>> import functools

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

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

Einfache Möglichkeit, eine Funktion mit Standardparametern zu umhüllen.


14
2018-06-17 01:55



print Funktion in Python generiert automatisch eine neue Zeile. Du könntest es versuchen:

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


14
2018-03-14 19:17



Code für Python 3.6.1

for i in range(0,10): print('.' , end="")

Ausgabe

..........
>>>

9
2018-04-03 17:14