Come faccio a scrivere un codice di più di 1 riga nell'interprete Python?


35

Ho un problema con la codifica di Python nel terminale. Sto solo imparando le basi quindi non ho bisogno di creare file .py.

Nel terminale posso eseguire una riga di codice nell'interprete Python, ma come posso scrivere più di una riga?

Ovviamente se premo invio, inserisce il comando e non scende di una riga.

Voglio solo testare quanto segue nel terminale:

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

1
Ho il sospetto che tu abbia problemi con "rientro". A. digitare "python". B. >>> si presenta. C. Per eseguire uno script, lo script deve essere correttamente indentato con 'tabs'.
r4.

3
Non ho chiesto a modo mio se l'apprendimento è corretto o no ... Ho fatto una domanda specifica, se conosci la risposta per favore ... in caso contrario ...

Risposte:


32

Aggiungi una barra rovesciata finale ( \)

Il trucco è - simile a quello che faresti bash, ad esempio - per aggiungere una barra rovesciata finale. Ad esempio, se voglio stampare un 1:

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

Se scrivi a \, Python ti chiederà ...(linee di continuazione) di inserire il codice nella riga successiva, per così dire.

Nota a margine: questo è ciò che accade automaticamente quando crei una funzione o una definizione di classe, ovvero i momenti in cui hai davvero bisogno di una nuova linea, quindi non c'è mai un buon uso per quello, o almeno nessuno di cui io sia a conoscenza. In altre parole, Python è abbastanza intelligente da essere consapevole che sono necessarie linee di continuazione quando si immette una nuova definizione di funzione o altri costrutti simili (ad es if:.). In questi casi automatici, tieni presente che devi inserire una riga vuota usando \per dire a Python che hai finito.

Per tutto il resto, devi scrivere una riga dopo l'altra. Il modo in cui un interprete lavora è che, beh, interpreta ogni riga che gli dai da mangiare. Non di più, non di meno. "Agirà" solo quando vedrà una nuova riga, quindi dice all'interprete di eseguire ciò che gli hai dato. La singola barra rovesciata impedirà all'interprete di ricevere mai un carattere di nuova riga (cioè non saprà che hai effettivamente premuto Enter), ma alla fine ne riceverà uno.

L'interprete di Python ha funzionalità avanzate quando usi GNU readline, come Emacs o le combinazioni di tasti in stile vi per navigare all'interno di una linea (ad es Ctrl-A.). Quelli tuttavia funzionano solo nell'unica riga corrente. Anche la storia è lì, basta provare e premere .

Cosa succede se desidero eseguire ripetutamente linee complicate?

Probabilmente si desidera utilizzare i file di origine corretti se si desidera eseguire più di una riga di codice alla volta.

Oppure, usa i notebook Jupyter , che offrono un ottimo modo interattivo per creare codice Python con un interprete integrato. Puoi scrivere il codice come faresti in un editor di codice sorgente, ma puoi scegliere quali righe vengono interpretate insieme. È quindi possibile eseguire in modo selettivo solo parti del codice. Il modo migliore è provare e vedere se si adatta al tuo flusso di lavoro.


:) funziona bene per la prima riga, ma se volessi più righe? la seconda barra rovesciata finale dà un errore di sintassi.

Quindi cosa non funziona esattamente ? Basta selezionare e copiare quelle righe, quindi incollarle nel terminale. Eseguiranno dall'alto verso il basso proprio come in uno script, poiché la nuova riga viene analizzata dall'interprete. Qual'è il problema?
slhck,

1
Vorrei digitarli direttamente nel terminale, piuttosto che scriverlo nell'editor e incollarlo lì ... sembra una perdita di tempo :)

Quindi devi solo digitare una riga dopo l'altra. Non c'è altro modo. È un interprete. Ti richiederà linee di continuazione solo quando ne hai davvero bisogno.
slhck,

7

Che ne dici di usare ;\? Il punto e virgola indica la fine di un comando e la barra rovesciata indica che stiamo proseguendo sulla riga successiva. Ad esempio, digitare pythondalla riga di comando per accedere all'interprete Python, quindi

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

dovrebbe dare un output di

0
4

2

In poche parole, se vuoi imparare e vuoi eseguire più di una riga, lo scrivi in ​​un file .py.

Il metodo backslash finale è utile quando si desidera eseguire rapidamente una serie di comandi, ma non aiuta durante l'apprendimento.

Sarai in grado di sviluppare meglio il codice, modificare i singoli comandi senza preoccuparti degli errori di ortografia e riutilizzare gli snippet di codice che ritieni utili se li scrivi in ​​un piccolo file.


1
Si, sono d'accordo. Ma sono a livello base. Non scrivo nulla di utile, solo stupidi test variabili e matematica, ecc. Nulla di degno nemmeno di creare un file. Grazie per il consiglio però.

Anche la semplice matematica merita di essere inserita in un file: se si tratta di 3 o più righe, lo farei anch'io in vi. Anche solo così è lì se mi chiedo cosa ho fatto dopo.
Rory Alsop,

1

Ho appena digitato quanto segue al mio prompt della shell e ha funzionato perfettamente:

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

Il modo per digitare più di una riga di codice nell'interprete Python interattivo è, beh, digitare più di una riga di codice nell'interprete Python interattivo. Penserei che sarebbe abbastanza buono per i tuoi scopi.

È vero che riceverai un nuovo prompt dopo ogni riga, il che significa che se due delle tue righe di codice producono output, tale output verrà separato da prompt. Immagino che questo sia ciò di cui ti preoccupi, sebbene l'esempio nella tua domanda non suggerisca che:

$ 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 questo è un problema, puoi racchiudere le tue dichiarazioni multiple in un'istruzione (correttamente rientrata!) 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
>>> 

(Suggerirei, anche se non risponde alla tua domanda, che se stai scrivendo un codice abbastanza complesso da importare, dovresti scrivere degli script. Forse hai iniziato a farlo nel corso di un anno e mezzo da quando hai pubblicato la domanda.)


0

Stavo solo esaminando la risposta che hai ottenuto. Ho continuato a sperimentare mettendo diversi simboli. Ho finalmente ottenuto la sintassi corretta per scriverlo.

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

questo ti darà un risultato

more string

3

senza alcun errore

ho appena usato ';' per farlo scrivere in un'altra riga

spero che la mia risposta possa aiutarti


0

Lascia la shell e apri un nuovo file editor. Cioè vai al file e apri il nuovo file. Scrivi tutte le righe di codice che desideri.


-2

Ai tre punti assicurati di premere il tasto "tab" prima di inserire il comando successivo. Puoi continuare a scrivere tanti comandi in quel modo. Quindi quando premi Invio dopo aver scritto la tua seconda riga di codice, l'interprete ti consente di inserire la terza riga di codice ... come nell'esempio di Fibonacci di seguito (dal tutorial):

a, b = 0,1 mentre b <10: ... stampa (b) # Se si immette il comando di stampa subito dopo i punti e si preme il tasto Invio alla fine, si otterrà un errore di rientro. Invece premi la scheda dopo i tre punti, quindi scrivi il tuo codice e premi il tasto Invio, ti permetterà di inserire la terza riga di codice e così via. Guarda l'esempio seguente (dal tutorial):

a, b = 0,1 # Seguito dal tasto Invio mentre b <10: # Seguito dal tasto Invio ... stampa (b) # Seguito dal tasto Invio. notare la scheda dopo i tre punti ... a, b = b, a + b # Seguito dal tasto Invio ... tasto Invio # Non ci sono più comandi da inserire

vedrai il risultato del prog precedente

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.