Wenn in interaktiven Interpreter einfügen, müssen Sie eine leere Zeile nach einer Blockanweisung haben, bevor die nächste Anweisung. Hier ist die Ausgabe von der Python-Interpreter überall eingebettet auf http://www.python.org:
Python 3.6.0 (default, Jan 13 2017, 00:00:00)
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> n = 5
>>> while n > 0:
... print (n)
... n = n - 1
... print ('Blastoff!')
File "<stdin>", line 4
print ('Blastoff!')
^
SyntaxError: invalid syntax
>>>
in der ersten Spalte Schreiben etwas ...
wird diese SyntaxError
verursachen, obwohl legal in einer Quelldatei. Dies liegt daran, dass alle zusammengesetzten Anweisungen nach ihrer Fertigstellung an exec(compile(... 'single'))
übergeben werden. und die Python REPL ist hier ein bisschen dumm, denke, dass es nur eine Aussage war, wenn es tatsächlich while
gefolgt von einem print
ist.
Enter drücken, so dass die Eingabeaufforderung wieder >>>
vor print
wird das Problem in der interaktiven Interpreter beheben:
Python 3.6.0 (default, Jan 13 2017, 00:00:00)
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> n = 5
>>> while n > 0:
... print (n)
... n = n - 1
...
5
4
3
2
1
>>> print ('Blastoff!')
Blastoff!
>>>
aber feststellen, dass die while
Schleife jetzt läuft, sobald die Verbindung Anweisung beendet wird, dh vor dem >>>
Prompt wird erneut angezeigt.
Neben dem Standard Python REPL gibt es noch weitere Shells. Eine beliebte, ipython, hat eine Konsolen-Shell, die kopier klebte Inhalt erkennen und diese ein ordnungsgemäß ausgeführt werden:
% ipython
Python 3.5.3 (default, Jan 19 2017, 14:11:04)
Type 'copyright', 'credits' or 'license' for more information
IPython 6.1.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]: n = 5
...: while n > 0:
...: print (n)
...: n = n - 1
...: print ('Blastoff!')
...:
5
4
3
2
1
Blastoff!
In [2]:
Führen Sie python2.x aus? –
@ArpitSolanki: Dies würde in Python 2 funktionieren. –
Führen Sie dies in einem interaktiven Interpreter? Dann müssen Sie eine Leerzeile zwischen der Zeile "n = n - 1" und der Zeile "print" einfügen. –