Wie schreibe ich Code mit mehr als einer Zeile im Python-Interpreter?


35

Ich habe ein Problem beim Codieren von Python im Terminal. Ich lerne nur Grundlagen, damit ich keine .py-Dateien erstellen muss.

Im Terminal kann ich im Python-Interpreter eine Codezeile ausführen, aber wie schreibe ich mehr als eine Zeile?

Wenn ich die Eingabetaste drücke, wird der Befehl eingegeben, und es wird keine Zeile weitergegangen.

Ich möchte nur folgendes im Terminal testen:

my_age = 35
my_eyes = 'Blue'
print "my age is %d and my eye color is %s" % (my_age, my_eyes)

1
Ich vermute, Sie haben Probleme mit der Einrückung. A. Geben Sie "Python" ein. B. >>> kommt hoch. C. Um ein Skript auszuführen, muss das Skript ordnungsgemäß mit Tabulatoren eingerückt sein.
r4.

3
Ich habe nicht gefragt, ob mein Weg ist, ob das Lernen korrekt ist oder nicht ... Ich habe eine bestimmte Frage gestellt, wenn Sie die Antwort wissen, bitte ... wenn nicht ...

Antworten:


32

Fügen Sie einen abschließenden Backslash ( \) hinzu

Der Trick ist - ähnlich wie Sie es bashzum Beispiel tun würden - einen abschließenden Backslash hinzuzufügen. Zum Beispiel, wenn ich eine drucken möchte 1:

charon:~ werner$ python
>>> print 1
1
>>> print \
... 1
1
>>> 

Wenn Sie eine schreiben \, fordert Python Sie mit ...(Fortsetzungszeilen) auf, Code in die nächste Zeile einzugeben.

Randnotiz: Dies geschieht automatisch, wenn Sie eine Funktion oder Klassendefinition erstellen, dh wenn Sie wirklich eine neue Zeile benötigen , so dass dies nie wirklich sinnvoll ist oder zumindest keine, die mir bekannt ist. Mit anderen Worten, Python ist intelligent genug, um zu wissen, dass Sie Fortsetzungszeilen benötigen, wenn Sie eine neue Funktionsdefinition oder ähnliche Konstrukte eingeben (z if:. B. ). Beachten Sie in diesen automatischen Fällen, dass Sie eine leere Zeile eingeben müssen \, um Python mitzuteilen, dass Sie fertig sind.

Für alles andere müssen Sie eine Zeile nach der anderen schreiben. Die Art und Weise, wie ein Interpreter arbeitet, ist, dass er jede Zeile interpretiert, die Sie ihm zuführen. Nicht mehr und nicht weniger. Es wird nur "handeln", wenn eine neue Zeile angezeigt wird, und fordert den Interpreter daher auf, das auszuführen, was Sie ihm gegeben haben. Der einfache Backslash verhindert, dass der Interpreter jemals ein Newline-Zeichen erhält (dh, er weiß nicht, dass Sie tatsächlich gedrückt haben Enter), aber er erhält irgendwann eines.

Der Interpreter von Python verfügt über erweiterte Funktionen, wenn Sie GNU-Readline verwenden, z. B. Emacs oder vi-artige Tastenkombinationen, um innerhalb einer Zeile zu navigieren (z Ctrl-A. B. ). Die funktionieren aber nur in der einen aktuellen Zeile. Die Geschichte ist auch da, versuchen Sie es und drücken Sie .

Was ist, wenn ich immer wieder komplizierte Zeilen ausführen möchte?

Sie möchten wahrscheinlich die richtigen Quelldateien verwenden, wenn Sie mehr als eine Codezeile gleichzeitig ausführen möchten.

Oder verwenden Sie Jupyter-Notizbücher , die eine großartige interaktive Möglichkeit zum Erstellen von Python-Code mit einem integrierten Interpreter bieten. Sie können Code wie in einem Quellcode-Editor schreiben, aber Sie können auswählen, welche Zeilen zusammen interpretiert werden. Sie können dann nur Teile des Codes selektiv ausführen. Der beste Weg ist, einfach zu versuchen, herauszufinden, ob das zu Ihrem Workflow passt.


:) funktioniert schön für die erste Zeile, aber was ist, wenn ich mehr Zeilen möchte? Der zweite nachgestellte Backslash führt zu einem Syntaxfehler.

Was genau funktioniert also nicht ? Wählen Sie einfach diese Zeilen aus, kopieren Sie sie und fügen Sie sie in das Terminal ein. Sie werden wie in einem Skript von oben nach unten ausgeführt, da die neue Zeile vom Interpreter analysiert wird. Was ist das Problem?
Slhck

1
Ich möchte diese direkt in das Terminal

Dann müssen Sie nur eine Zeile nach der anderen eingeben. Es gibt keinen anderen Weg. Es ist ein Dolmetscher. Sie werden nur dann zur Eingabe von Fortsetzungszeilen aufgefordert, wenn Sie diese wirklich benötigen.
Slhck

7

Wie wäre es mit ;\? Das Semikolon signalisiert das Ende eines Befehls und der Backslash signalisiert, dass wir in der nächsten Zeile fortfahren. Geben Sie beispielsweise pythonin der Befehlszeile Folgendes ein, um in den Python-Interpreter zu gelangen

>>> x=0 ;\
... print(x) ;\
... x=4 ;\
... print(x)

sollte eine Ausgabe von geben

0
4

2

Einfach ausgedrückt, wenn Sie lernen und mehr als eine Zeile ausführen möchten, schreiben Sie sie in eine .py-Datei.

Die Methode mit abschließendem Backslash ist gut, wenn Sie schnell eine Reihe von Befehlen ausführen möchten, aber sie hilft nicht, wenn Sie lernen.

Sie können Code besser entwickeln, einzelne Befehle bearbeiten, ohne sich um Rechtschreibfehler kümmern zu müssen, und Code-Schnipsel wiederverwenden, die Sie nützlich finden, wenn Sie sie in eine kleine Datei schreiben.


1
Ja, ich stimme zu. Aber ich bin auf einer grundlegenden Ebene. Ich schreibe nichts Nützliches, nur dummes Variablentesten und Mathe usw. Nichts, was es wert wäre, eine Datei zu erstellen. Vielen Dank für den Rat.

Sogar einfache Mathematik ist es wert, eine Datei einzutragen - wenn es 3 oder mehr Zeilen sind, würde ich das in vi selbst tun. Trotzdem ist es da, wenn ich mich frage, was ich später getan habe.
Rory Alsop

1

Ich habe an meiner Shell-Eingabeaufforderung Folgendes eingegeben, und es hat einwandfrei funktioniert:

$ python
Python 2.7.3 (default, Aug  1 2012, 05:16:07) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> my_age = 35
>>> my_eyes = 'Blue'
>>> print "my age is %d and my eye color is %s" % (my_age, my_eyes)
my age is 35 and my eye color is Blue
>>> 

Die Möglichkeit, mehr als eine Codezeile im interaktiven Python-Interpreter einzugeben, besteht darin, mehr als eine Codezeile im interaktiven Python-Interpreter einzugeben. Ich würde denken, das wäre gut genug für Ihre Zwecke.

Es ist richtig, dass Sie nach jeder Zeile eine neue Eingabeaufforderung erhalten. Wenn also zwei Ihrer Codezeilen eine Ausgabe erzeugen, wird diese Ausgabe durch Eingabeaufforderungen getrennt. Ich denke, das ist es, worüber Sie sich Sorgen machen, obwohl das Beispiel in Ihrer Frage nicht nahe legt, dass:

$ python
Python 2.7.3 (default, Aug  1 2012, 05:16:07) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print "first line"
first line
>>> print "second line"
second line
>>> 

Wenn das ein Problem ist, können Sie Ihre mehreren Anweisungen in eine (richtig eingerückte!) ifAnweisung einschließen :

$ python
Python 2.7.3 (default, Aug  1 2012, 05:16:07) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> if 1:
...     print "first line"
...     print "second line"
... 
first line
second line
>>> 

(Ich würde vorschlagen, auch wenn dies Ihre Frage nicht beantwortet, wenn Sie Code schreiben, der so komplex ist, dass es darauf ankommt, sollten Sie Skripte schreiben. Vielleicht haben Sie in den anderthalb Jahren damit begonnen seit du die frage gepostet hast.)


0

Ich habe gerade die Antwort durchgearbeitet, die Sie erhalten haben. Ich habe weiter experimentiert, indem ich verschiedene Symbole eingesetzt habe. Endlich habe ich die richtige Syntax gefunden, um sie zu schreiben

print("more string") ; print(3)

Dies gibt Ihnen ein Ergebnis

more string

3

ohne fehler

Ich habe gerade ';' um es in eine andere Zeile schreiben zu lassen

Ich hoffe, meine Antwort kann Ihnen helfen


0

Verlassen Sie einfach die Shell und öffnen Sie eine neue Editor-Datei. Dh gehe zur Datei und öffne eine neue Datei. Schreiben Sie so viele Codezeilen, wie Sie möchten.


-2

Stellen Sie bei den drei Punkten sicher, dass Sie die Tabulatortaste drücken, bevor Sie den nächsten Befehl eingeben. Sie können auf diese Weise beliebig viele Befehle schreiben. Wenn Sie also nach dem Schreiben der zweiten Codezeile die Eingabetaste drücken, können Sie mit dem Interpreter die dritte Codezeile eingeben ... wie im folgenden Fibonacci-Beispiel (aus dem Tutorial):

a, b = 0,1, während b <10: ... print (b) # Wenn Sie den Druckbefehl unmittelbar nach den Punkten eingeben und am Ende die Eingabetaste drücken, wird u ein Einrückungsfehler angezeigt. Drücken Sie stattdessen die Tabulatortaste nach den drei Punkten, schreiben Sie Ihren Code und drücken Sie die Eingabetaste, damit Sie die dritte Codezeile eingeben können und so weiter. Schauen Sie sich das folgende Beispiel an (aus dem Tutorial):

a, b = 0,1 # gefolgt von der Eingabetaste, während b <10: # gefolgt von der Eingabetaste ... print (b) # gefolgt von der Eingabetaste. Beachten Sie die Tabulatortaste nach den drei Punkten ... a, b = b, a + b # Gefolgt von der Eingabetaste ... Eingabetaste # Keine weiteren Befehle zur Eingabe

Sie werden das Ergebnis des obigen Programms sehen

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.