Como escrevo código com mais de uma linha no interpretador Python?

35

Eu tenho um problema ao codificar Python no terminal. Estou apenas aprendendo o básico, por isso não preciso criar arquivos .py.

No terminal, posso executar uma linha de código no interpretador Python, mas como escrevo mais de uma linha?

Obviamente, se eu pressionar enter, ele entra no comando e não desce uma linha.

Eu só quero testar o seguinte no terminal:

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

fonte
1
Eu suspeito que você está tendo problemas com 'indentação'. A. digite 'python'. B. >>> aparece. C. Para executar um script, o script precisa ser corretamente recuado com 'tabs'.
r4.
3
Eu não perguntar se o meu caminho se a aprendizagem é correta ou não ... Eu fiz uma pergunta específica, se você sabe a resposta por favor ... se não ...

Respostas:

32

Adicionar uma barra invertida à direita ( \)

O truque é - semelhante ao que você faria bash, por exemplo - para adicionar uma barra invertida à direita. Por exemplo, se eu quiser imprimir um 1:

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

Se você escrever um \, o Python solicitará ...(linhas de continuação) a inserção de código na próxima linha, por assim dizer.

Nota lateral: é o que acontece automaticamente quando você cria uma definição de função ou classe, ou seja, os momentos em que você realmente precisa de uma nova linha, para que nunca haja um uso realmente bom para isso, ou pelo menos nenhum que eu conheça. Em outras palavras, o Python é inteligente o suficiente para estar ciente de que você precisa de linhas de continuação ao inserir uma nova definição de função ou outras construções semelhantes (por exemplo if:). Nesses casos automáticos, observe que você precisa inserir uma linha vazia usando \para informar ao Python que você terminou.

Para todo o resto, você precisa escrever uma linha após a outra. A maneira como um intérprete funciona é que ele interpreta todas as linhas que você o alimenta. Nem mais, nem menos. Ele somente "atuará" quando vir uma nova linha, portanto, instruindo o intérprete a executar o que você deu. A única barra invertida impedirá que o intérprete receba um caractere de nova linha (ou seja, ele não saberá que você realmente pressionou Enter), mas acabará recebendo um.

O intérprete do Python possui recursos avançados quando você usa a linha de leitura GNU, como Emacs ou atalhos de teclado no estilo vi para navegar dentro de uma linha (por exemplo Ctrl-A). No entanto, esses funcionam apenas na linha atual. A história também está lá, apenas tente e pressione .

E se eu quiser executar linhas complicadas repetidamente?

Você provavelmente deseja usar arquivos de origem adequados se desejar executar mais de uma linha de código por vez.

Ou use os blocos de anotações Jupyter , que oferecem uma ótima maneira interativa de criar código Python com um intérprete embutido. Você pode escrever o código como faria em um editor de código-fonte, mas pode escolher quais linhas serão interpretadas juntas. Você pode executar apenas partes do código seletivamente. A melhor maneira é apenas tentar e ver se isso se encaixa no seu fluxo de trabalho.

slhck
fonte
:) bom trabalho para a primeira linha, mas e se eu quiser mais linhas? a segunda barra invertida à direita fornece erro de sintaxe.
Então, o que exatamente não está funcionando? Basta selecionar e copiar essas linhas e colá-las no terminal. Eles serão executados de cima para baixo, como em um script, pois a nova linha é analisada pelo intérprete. Qual é o problema?
slhck
1
Eu gostaria de escrever-los diretamente no terminal, em vez de escrevê-lo no editor e colá-lo lá ... parece ser desperdício de tempo :)
Então você precisa apenas digitar uma linha após a outra. Não há outra maneira. É um intérprete. Ele solicitará linhas de continuação somente quando você realmente precisar delas.
slhck
7

Que tal usar ;\? O ponto-e-vírgula sinaliza o fim de um comando e a barra invertida indica que continuamos na próxima linha. Por exemplo, digite pythonna linha de comando para acessar o interpretador Python e, em seguida,

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

deve dar uma saída de

0
4
Garrett
fonte
2

Simplificando, se você deseja aprender e executar mais de uma linha, grave-a em um arquivo .py.

O método de barra invertida à direita é bom quando você deseja executar rapidamente uma série de comandos, mas não ajuda quando você está aprendendo.

Você poderá desenvolver melhor o código, editar comandos individuais sem se preocupar com erros de ortografia e reutilizar trechos de código que achar úteis se os gravar em um arquivo pequeno.

Rory Alsop
fonte
1
Sim eu concordo. Mas eu estou em um nível básico. Não escrevo nada de útil, apenas testes estúpidos de variáveis ​​e matemática, etc. Nada digno de criar um arquivo. Obrigado pelo conselho embora.
Mesmo a matemática simples vale a pena colocar em um arquivo - se forem 3 ou mais linhas, eu mesma faria no vi. Mesmo assim, está lá se eu me perguntar o que fiz depois.
Rory Alsop
1

Eu apenas digitei o seguinte no prompt do shell e funcionou bem:

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

A maneira de digitar mais de uma linha de código no interpretador interativo Python é digitar mais de uma linha de código no interpretador interativo Python. Eu acho que seria bom o suficiente para seus propósitos.

É verdade que você receberá um novo prompt após cada linha, o que significa que, se duas de suas linhas de código produzirem saída, essa saída será separada por avisos. Acho que é com isso que você está preocupado, embora o exemplo na sua pergunta não sugira que:

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

Se isso for um problema, você pode colocar suas múltiplas instruções em uma instrução (recuada corretamente!) 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
>>> 

(Sugiro, mesmo que não responda à sua pergunta, que se você estiver escrevendo um código complexo o suficiente para que isso importe, você deve escrever scripts. Talvez você tenha começado a fazê-lo no ano e meio desde que você postou a pergunta.)

Keith Thompson
fonte
0

Eu estava apenas passando pela resposta que você obteve. Continuei experimentando colocando símbolos diferentes. Finalmente consegui a sintaxe correta para escrevê-la. Tente o seguinte

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

isso lhe dará um resultado

more string

3

sem nenhum erro

Acabei de usar ';' para escrever em outra linha

espero que minha resposta possa ajudá-lo

Lâmina Curiosa
fonte
0

Apenas deixe o shell e abra um novo arquivo de editor. Ou seja, vá ao arquivo e abra um novo arquivo. Escreva quantas linhas de código desejar.

Hemant Gautam
fonte
-2

Nos três pontos, certifique-se de pressionar a tecla "tab" antes de inserir o próximo comando. Você pode continuar escrevendo tantos comandos dessa maneira. Portanto, quando você pressiona enter após escrever sua segunda linha de código, o interpretador permite inserir a terceira linha de código ... como no exemplo de Fibonacci abaixo (do tutorial):

a, b = 0,1 enquanto b <10: ... print (b) # Se você digitar o comando print imediatamente após os pontos e pressionar a tecla Enter no final, você receberá um erro de indentação. Em vez disso, pressione a guia após os três pontos, depois escreva seu código e pressione a tecla Enter. Isso permitirá que você insira a terceira linha do código e assim por diante. Veja o exemplo abaixo (do tutorial):

a, b = 0,1 # Seguido pela tecla enter enquanto b <10: # Seguido pela tecla enter ... print (b) # Seguido pela tecla enter. observe a guia após os três pontos ... a, b = b, a + b # Seguido da tecla Enter ... tecla enter # Não há mais comandos para inserir

você verá o resultado do programa acima

Shashi
fonte