Standard Input und input()

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
mm96
User
Beiträge: 30
Registriert: Donnerstag 26. November 2020, 23:24

Hi Leute,
ich les grad etwas über den Standard Input, dabei hab ich folgendes Problem:

Nach meinem Verständnis sollte der Befehl

Code: Alles auswählen

s = input('Eingabe: ')
dasselbe liefern wie

Code: Alles auswählen

import sys
print('Eingabe: ', end='')	# end='' um die neue Zeile zu unterdrücken
s = sys.stdin.readline()
Wenn ich das ausführe, bekomme zuerst die Zeile vom input(), wo ich z. B. 5 eingebe.
Dann folgt allerdings nicht der nächste print-Befehl, sondern es wird zuerst die Tastatureingabe abgegriffen,
erst danach wird dann noch der print-Befehl ausgeführt.
Ich vermute, es hat etwas mit dem end='' zu tun, denn wenn ich das weglasse funktioniert es, allerdings eben
mit der zusätzlichen neuen Zeile...

Weiß da jemand die Ursache davon?

Liebe Grüße und vielen Dank!
Sirius3
User
Beiträge: 18279
Registriert: Sonntag 21. Oktober 2012, 17:20

Das hat nichts mit der Standardeingabe zu tun, sondern mit der Standardausgabe. Ausgegeben wird erst, wenn eine neue Zeile anfängt. Außer man sagt das explizit:

Code: Alles auswählen

print('Eingabe: ', end='', flush=True)
s = sys.stdin.readline()
mm96
User
Beiträge: 30
Registriert: Donnerstag 26. November 2020, 23:24

Super, vielen Dank!
Antworten