Как мне написать код из более чем одной строки в интерпретаторе Python?


35

У меня проблема с кодированием 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)

1
Я подозреваю, что у вас есть проблемы с «отступом». А. Тип "питон". Б. >>> подходит. C. Чтобы запустить скрипт, скрипт должен иметь правильный отступ с помощью «табуляций».
р4.

3
Я не спрашивал, правильно ли я учусь, если обучение правильное или нет ... Я задал конкретный вопрос, если вы знаете ответ, пожалуйста ... если нет ...

Ответы:


32

Добавьте завершающий обратный слеш ( \)

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

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

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

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

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

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

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

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

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


:) хорошо работает для первой строки, но что, если я хочу больше строк? вторая конечная обратная косая черта дает синтаксическую ошибку.

Так что именно не работает? Просто выберите и скопируйте эти строки, затем вставьте их в терминал. Они будут выполняться сверху вниз, как в скрипте, так как перевод строки выполняет синтаксический анализ новой строки. В чем проблема?
Slhck

1
Я хотел бы напечатать их непосредственно в терминале, а не записать их в редактор и вставить туда ... кажется, пустая трата времени :)

Затем вы должны просто ввести одну строку за другой. Другого пути нет. Это переводчик. Он предложит вам продолжить строки только тогда, когда они вам действительно нужны.
Slhck

7

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

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

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

0
4

2

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

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

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


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

Даже простую математику стоит поместить в файл - если это 3 или более строк, я бы сам сделал это в vi. Даже если это так, если мне интересно, что я сделал позже.
Рори Олсоп

1

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

$ 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

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

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

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

more string

3

без ошибок

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

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


0

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


-2

На трех точках обязательно нажмите клавишу «Tab», прежде чем вводить следующую команду. Таким образом, вы можете продолжать писать столько команд. Поэтому, когда вы нажимаете клавишу ввода после написания второй строки кода, интерпретатор позволяет вам ввести третью строку кода ... как в примере Фибоначчи ниже (из учебника):

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

a, b = 0,1 # сопровождается клавишей ввода, а b <10: # сопровождается клавишей ввода ... print (b) # сопровождается клавишей ввода. обратите внимание на вкладку после трех точек ... a, b = b, a + b #, сопровождаемых клавишей ввода ... клавишей ввода # Нет больше команд для ввода

вы увидите результат вышеописанной проги

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.