2012-01-24 08:58:00 +0000 2012-01-24 08:58:00 +0000
36
36

Как написать код более 1 строки в интерпретаторе Python?

У меня проблема с кодировкой Python в терминале. Я просто учусь основам, так что мне не нужно создавать .py-файлы.

В терминале я могу запустить одну строку кода в интерпретаторе Python, но как мне написать более одной строки?

Очевидно, что если я нажму enter, то он войдёт в команду и не пойдёт вниз по строке.

Я просто хочу протестировать следующее в терминале:

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

Ответы (7)

33
33
33
2012-01-24 09:37:07 +0000

Добавьте трейлинговый обратный слеш (`## Добавьте трейлинговый обратный слеш ()

Хитрость в том, чтобы - аналогично тому, что вы бы сделали в bash, например - добавить трейлинговый обратный слеш. Например, если я хочу напечатать 1:

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

Если вы напишете ## Добавьте трейлинговый обратный слеш (## Добавьте трейлинговый обратный слеш ()

Хитрость в том, чтобы - аналогично тому, что вы бы сделали в bash, например - добавить трейлинговый обратный слеш. Например, если я хочу напечатать 1:

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

Если вы напишете , Python попросит вас с помощью ... (строк продолжения) ввести код в следующей строке, так сказать.

Боковая заметка: Это то, что автоматически происходит, когда вы создаете функцию или определение класса, т.е. время, когда вам действительно необходима новая строка, так что никогда не бывает действительно хорошего использования для этого, или, по крайней мере, ничего из того, что я знаю. Другими словами, Python достаточно умен, чтобы знать, что вам нужны линии продолжения, когда вы вводите определение новой функции или другие подобные конструкции (например, if:). В этих автоматических случаях обратите внимание, что вам нужно ввести пустую строку, используя ## Добавьте трейлинговый обратный слеш (## Добавьте трейлинговый обратный слеш ()

Хитрость в том, чтобы - аналогично тому, что вы бы сделали в bash, например - добавить трейлинговый обратный слеш. Например, если я хочу напечатать 1:

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

Если вы напишете ## Добавьте трейлинговый обратный слеш (## Добавьте трейлинговый обратный слеш ()

Хитрость в том, чтобы - аналогично тому, что вы бы сделали в bash, например - добавить трейлинговый обратный слеш. Например, если я хочу напечатать 1:

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

Если вы напишете , Python попросит вас с помощью ... (строк продолжения) ввести код в следующей строке, так сказать.

Боковая заметка: Это то, что автоматически происходит, когда вы создаете функцию или определение класса, т.е. время, когда вам действительно необходима новая строка, так что никогда не бывает действительно хорошего использования для этого, или, по крайней мере, ничего из того, что я знаю. Другими словами, Python достаточно умен, чтобы знать, что вам нужны линии продолжения, когда вы вводите определение новой функции или другие подобные конструкции (например, if:). В этих автоматических случаях обратите внимание, что вам нужно ввести пустую строку, используя , чтобы сообщить Python, что вы закончили.

Для всего остального вам нужно писать одну строку за другой. Способ, которым работает интерпретатор, заключается в том, что он, ну, интерпретирует каждую поданную вами строку. Не больше, не меньше. Он будет “действовать” только тогда, когда увидит новую строку, таким образом говоря интерпретатору, чтобы он выполнил то, что вы ему дали. Одиночный обратный слэш не позволит интерпретатору когда-либо получить символ новой строки (т.е. он не будет знать, что вы на самом деле нажали Enter), но в конце концов он получит его. Интерпретатор

Python имеет расширенные возможности , когда вы используете GNU строку для чтения, такую как Emacs или vi-стиль клавиш для навигации внутри строки (например, Ctrl-A). Однако они работают только в одной текущей строке. История тоже есть, просто попробуйте нажать ↑.

Что если я захочу запускать сложные строки снова и снова?

Вы наверняка захотите использовать правильные исходные файлы, если хотите выполнять более одной строки кода за раз.

Или используйте Jupyter notebooks , которые предлагают отличный, интерактивный способ создания кода на Python со встроенным интерпретатором. Вы можете писать код так же, как и в редакторе исходного кода, но вы можете выбрать, какие строки интерпретируются вместе. Затем вы можете запускать только части кода выборочно. Лучший способ - просто попробовать и посмотреть, подходит ли это для вашего рабочего процесса.

8
8
8
2013-07-01 22:22:29 +0000

Как насчет использования ;Как насчет использования ? Точка с запятой сигнализирует об окончании команды, а обратная косая черта - о том, что мы продолжаем на следующей строке. Например, введитеpython` в командной строке, чтобы попасть в интерпретатор Python, тогда

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

должны выдать вывод

0
4
2
2
2
2012-01-24 09:54:25 +0000

Проще говоря, если вы хотите научиться и хотите запустить более одной строки, запишите ее в файл .py.

Метод трейлингового обратного слеша хорош, когда вы хотите быстро запустить серию команд, но он не помогает, когда вы учитесь.

Вы сможете лучше разрабатывать код, редактировать отдельные команды, не беспокоясь о орфографических ошибках, и повторно использовать фрагменты кода, которые вы сочтете полезными, если запишете их в небольшой файл.

1
1
1
2018-05-01 18:28:49 +0000

Я только что просматривал ответ, который вы получили. Я продолжал экспериментировать, ставя различные символы. Я наконец-то получил правильный синтаксис, чтобы записать его. Попробуйте следующие

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

это даст вам результат

без каких-либо ошибок

я только что использовал ‘;’, чтобы заставить его написать в другой строке

я надеюсь, что мой ответ может вам помочь.

1
1
1
2013-07-01 22:44:47 +0000

Я просто набрал в командной строке оболочки следующий текст, и он отлично сработал:

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

Способ набрать более одной строки кода в интерактивном интерпретаторе Python - это, ну, набрать более одной строки кода в интерактивном интерпретаторе Python. Я бы подумал, что этого будет достаточно для ваших целей.

Это правда, что после каждой строки вы получите новую подсказку, что означает, что если две ваши строки кода выдадут результат, то этот результат будет разделен подсказками. Думаю, вас это и беспокоит, хотя пример в вашем вопросе этого не предполагает:

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

Если это проблема, вы можете заключить ваши многочисленные утверждения в (правильно отступивший!) утверждение if:

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

(Я бы посоветовал, даже если это не отвечает на ваш вопрос, что если вы пишете код, достаточно сложный, чтобы это имело значение, вы должны писать сценарии. Возможно, вы начали это делать за полтора года с тех пор, как вы разместили вопрос).

0
0
0
2018-08-28 19:51:18 +0000

Просто оставьте оболочку и откройте новый файл редактора. Т.е. перейдите к файлу и откройте новый файл. Напишите столько строк кодов, сколько захотите.

-2
-2
-2
2016-05-25 12:12:58 +0000

В трех точках, прежде чем вводить следующую команду, обязательно нажмите клавишу “табуляция”. Таким образом вы сможете продолжать писать столько команд. Поэтому, когда вы нажимаете enter после написания второй строки кода, интерпретатор позволяет вам ввести третью строку кода… как в примере Фибоначчи ниже (из учебника):

a,b=0,1, а b<10: … print(b) # Если вы введете команду print сразу после точек и нажмете enter клавишу в конце, u получите ошибку с отступом. Вместо этого нажмите на табуляцию после трех точек, затем напишите свой код и нажмите клавишу enter, это позволит u ввести третью строку кода и так далее. Посмотрите пример ниже (из учебника):

a,b=0,1 # Followed by enter key while b<10: # Followed by enter key… print(b) # Followed by enter key. обратите внимание на табуляцию после трех точек… a,b=b,a+b # Followed by enter key…enter key # No more commands to enter

you’ll see the result of the progress above prog