Kann mir jemand eine kurze Einführung in stdin und stdout in Python 3 geben? [geschlossen]

8

Ich weiß, dass dies nach etwas klingt, was ich googlen kann, aber die Wahrheit ist, dass ich nicht verstehe oder nicht verstehe, was die wenigen Python 3-Quellen erklären.

Hier sind meine Fragen:

  • Ist input() die Funktion stdin in Python 3? Bedeutet das, dass, wenn Sie Ihr Programm "filename.py" öffnen, stdin das ist, was der Benutzer eingibt?
  • Ist print() die Funktion stdout in Python 3, oder müssen Sie in eine Datei schreiben?
  • Für das Spotify-Puzzle wird "Input" angegeben wird von stdin gelesen ". Was sollte meine Datei von stdin und stdout ?
  • enthalten?

Aktualisierung: Bedeutet das, dass ich verwenden kann:

%Vor%

... statt ...

%Vor%

?

    
Martin Hallén 24.01.2012, 00:21
quelle

5 Antworten

7

stdin und stdout sind dateiähnliche Objekte, die vom Betriebssystem bereitgestellt werden. Im Allgemeinen, wenn ein Programm in einer interaktiven Sitzung ausgeführt wird, ist stdin Tastatureingabe und stdout ist das Benutzer-tty, aber die Shell kann verwendet werden, um sie von normalen Dateien oder piped Ausgabe von und Eingabe in andere Programme umzuleiten.

input() wird verwendet, um den Benutzer zur Eingabe von Eingaben aufzufordern. Bei so etwas wie einem Programmierpuzzle wird normalerweise angenommen, dass stdin von einer Datendatei umgeleitet wird, und wenn das Eingabeformat angegeben wird, ist es am besten, sys.stdin.read() zu verwenden, anstatt eine Eingabe mit input() anzufordern. input() ist für interaktive Benutzereingaben gedacht, kann eine Eingabeaufforderung (auf sys.stdout) anzeigen und die GNU readline-Bibliothek (falls vorhanden) verwenden, um die Bearbeitung von Zeilen usw. zu ermöglichen.

print() ist tatsächlich die gebräuchlichste Schreibweise für stdout . Sie müssen nichts Besonderes tun, um den Ausgabestream festzulegen. print() schreibt in sys.stdout , wenn keine alternative Datei als file= -Parameter angegeben wird.

    
geoffspear 24.01.2012, 00:30
quelle
1

Wenn Sie Ihr Python-Programm ausführen, ist sys.stdin das mit dem Standard verbundene Dateiobjekt Eingabe (STDIN), sys.stdout ist das Dateiobjekt für die Standardausgabe (STDOUT) und sys.stderr ist das Dateiobjekt für den Standardfehler (STDERR).

Überall in der Dokumentation werden Verweise auf Standardeingabe, Standardausgabe oder Standardfehler angezeigt. Dies bezieht sich auf diese Dateihandles. Sie können direkt auf sie zugreifen ( sys.stdout.write(...) , sys.stdin.read() usw.) oder Komfortfunktionen verwenden, die diese Streams verwenden, wie input() und print() .

Beim Spotify-Rätsel ist der einfachste Weg, die Eingabe zu lesen, etwa Folgendes:

%Vor%

Nach diesen zwei Zeilen befindet sich die Eingabe für Ihr Programm jetzt in der str data .

    
Andrew Clark 24.01.2012 00:45
quelle
0

Aus der Python-Dokumentation für print :

  

Das Datei Argument muss ein Objekt mit einer write(string) Methode sein; Wenn es nicht vorhanden ist oder None , wird sys.stdout verwendet. Die Ausgabepufferung wird durch Datei bestimmt. Verwenden Sie file.flush() , um zum Beispiel das sofortige Erscheinen auf einem Bildschirm sicherzustellen.

    
Greg Hewgill 24.01.2012 00:27
quelle
0
  

Ist input () die stdin-Funktion in Python 3? Bedeutet das, dass wenn Sie Ihr filename.py-Programm öffnen, die stdin das ist, was der Benutzer eingibt?

input() liest von der Standardeingabe (in einigen Kontexten kurz stdin genannt), ja. Keine Sprache, die ich kenne, hat eine Funktion namens stdin in der Standardbibliothek. Wenn Sie das Programm auf die übliche Weise ausführen, wird das, was der Benutzertyp der Standardeingabe liefert, ja. Das bedeutet "Standard-Eingabe". Es gibt ein separates Programm, das das eingibt, was der Benutzer zur Standardeingabe eintippt (und ein paar andere praktische Dinge wie das Interpretieren der Rücktaste tut). Ihr Skript erstellt nicht das Fenster , in das der Text eingegeben wird.

sys.stdin (d. h. der im Modul stdin definierte Wert sys ) ist ein Objekt , das die Standardeingabe darstellt. Dies wird bereitgestellt, damit Sie es in Kontexten verwenden können, in denen Sie "eine Datei" angeben müssen, damit die Eingabe anstelle einer Datei vom Benutzer gelesen wird.

  

Ist print () die stdout-Funktion in Python 3, oder müssen Sie in eine Datei schreiben?

print() schreibt (standardmäßig; Sie können ein file Schlüsselwortargument angeben, um dies zu ändern) in die Standardausgabe (ja, in einigen Kontexten stdout ), yes. Alle oben genannten Einschränkungen gelten: stdout ist keine Funktion in irgendeiner Sprache, von der ich jemals gehört habe, und ein völlig separates Programm bewirkt, dass die Ausgabe Ihres Skripts auf dem Bildschirm in einem hübschen 80x24 Weiß-Text-Format angezeigt wird. on-black-background (oder wie Sie es konfiguriert haben) Box.

sys.stdout ist ein Objekt , das für die Standardausgabe steht und ähnlich wie sys.stdin verwendet wird. Sie können es explizit mit der Funktion print verwenden, aber es gibt keinen Grund: Es ist der Standardwert.

  

Beim Spotify-Puzzle heißt es: "Input wird von stdin gelesen". Was sollte meine Datei von stdin und stdout enthalten?

Die Problemspezifikation bedeutet "verwende die Funktion input() , um eine Eingabe zu erhalten".

    
Karl Knechtel 24.01.2012 00:33
quelle
0
  

Ist input() die Funktion stdin in Python 3?

Ja.

  

Bedeutet das, dass, wenn Sie Ihr Programm filename.py öffnen, das stdin das ist, was der Benutzer eingibt?

Ja.

  

Ist print() die Funktion stdout in Python 3, oder müssen Sie in eine Datei schreiben?

Sie können beides verwenden.

  

Beim Spotify-Puzzle heißt es: "Input wird von stdin gelesen". Was sollte meine Datei von stdin und stdout enthalten?

Verwenden Sie einfach import sys , um zu den Dateien sys.stdin und sys.stdout zu gelangen. Sie benötigen den Import nicht, wenn Sie stattdessen die integrierten Funktionen input und print verwenden.

    
Mike DeSimone 24.01.2012 00:30
quelle

Tags und Links