Comment écrire du code de plus d'une ligne dans l'interpréteur Python?

35

J'ai un problème de codage Python dans le terminal. J'apprends juste les bases donc je n'ai pas besoin de créer de fichiers .py.

Dans le terminal, je peux exécuter une ligne de code dans l'interpréteur Python, mais comment puis-je écrire plusieurs lignes?

Évidemment, si j'appuie sur Entrée, il entre dans la commande et ne descend pas une ligne.

Je veux juste tester ce qui suit dans le terminal:

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

la source
1
Je soupçonne que vous rencontrez des problèmes avec l'indentation. A. tapez 'python'. B. >>> arrive. C. Pour exécuter un script, le script doit être correctement mis en retrait avec des «tabulations».
r4.
3
Je n'ai pas demandé si mon chemin si l'apprentissage est correct ou non ... J'ai posé une question spécifique, si vous connaissez la réponse s'il vous plaît ... sinon ...

Réponses:

32

Ajouter une barre oblique inverse de fin ( \)

L'astuce est - similaire à ce que vous feriez dans bash, par exemple - pour ajouter une barre oblique inverse de fin. Par exemple, si je veux imprimer un 1:

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

Si vous écrivez un \, Python vous demandera avec ...(lignes de continuation) d'entrer le code dans la ligne suivante, pour ainsi dire.

Note latérale: C'est ce qui se produit automatiquement lorsque vous créez une définition de fonction ou de classe, c'est-à-dire les moments où vous avez vraiment besoin d' une nouvelle ligne, donc il n'y a jamais une très bonne utilisation pour cela, ou du moins aucune à ma connaissance. En d'autres termes, Python est suffisamment intelligent pour savoir que vous avez besoin de lignes de continuation lorsque vous entrez une nouvelle définition de fonction ou d'autres constructions similaires (par exemple if:). Dans ces cas automatiques, notez que vous devez entrer une ligne vide en \indiquant à Python que vous avez terminé.

Pour tout le reste, vous devez écrire une ligne après l'autre. La façon dont un interprète fonctionne est qu'il interprète bien chaque ligne que vous lui fournissez. Ni plus, ni moins. Il "n'agira" que lorsqu'il verra une nouvelle ligne, disant donc à l'interprète d'exécuter ce que vous lui avez donné. La barre oblique inverse unique empêchera l'interpréteur de recevoir un caractère de nouvelle ligne (c'est-à-dire qu'il ne saura pas que vous avez réellement appuyé Enter), mais il en recevra éventuellement un.

L'interpréteur de Python a des capacités avancées lorsque vous utilisez GNU readline, comme Emacs ou des raccourcis clavier de style vi pour naviguer dans une ligne (par exemple Ctrl-A). Ceux-ci ne fonctionnent cependant que dans la seule ligne actuelle. L'histoire est là aussi, essayez simplement d'appuyer .

Et si je veux répéter des lignes compliquées encore et encore?

Vous souhaiterez probablement utiliser les fichiers source appropriés si vous souhaitez exécuter plusieurs lignes de code à la fois.

Ou, utilisez les blocs - notes Jupyter , qui offrent un excellent moyen interactif de créer du code Python avec un interpréteur intégré. Vous pouvez écrire du code comme vous le feriez dans un éditeur de code source, mais vous pouvez choisir les lignes à interpréter ensemble. Vous pouvez ensuite exécuter uniquement certaines parties du code de manière sélective. La meilleure façon est d'essayer de voir si cela correspond à votre flux de travail.

slhck
la source
:) belles œuvres pour la première ligne, mais si je veux plus de lignes? la deuxième barre oblique inverse de fin donne une erreur de syntaxe.
Alors, qu'est-ce qui ne fonctionne pas exactement ? Sélectionnez et copiez ces lignes, puis collez-les dans le terminal. Ils s'exécuteront de haut en bas comme dans un script, car la nouvelle ligne est analysée par l'interpréteur. Quelle est la solution?
slhck
1
J'aimerais les taper directement dans le terminal, plutôt que de les écrire dans l'éditeur et de les coller là ... semble être une perte de temps :)
Ensuite, il vous suffit de taper une ligne après l'autre. Il n'y a pas d'autre chemin. C'est un interprète. Il vous demandera des lignes de continuation uniquement lorsque vous en aurez vraiment besoin.
slhck
7

Que diriez-vous d'utiliser ;\? Le point-virgule signale la fin d'une commande et la barre oblique inverse indique que nous continuons sur la ligne suivante. Par exemple, tapez pythonsur la ligne de commande pour accéder à l'interpréteur Python, puis

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

devrait donner une sortie de

0
4
Garrett
la source
2

Autrement dit, si vous souhaitez apprendre et exécuter plusieurs lignes, vous l'écrivez dans un fichier .py.

La méthode de barre oblique inverse est bonne lorsque vous souhaitez exécuter rapidement une série de commandes, mais elle n'aide pas lorsque vous apprenez.

Vous pourrez mieux développer le code, modifier les commandes individuelles sans vous soucier des fautes d'orthographe et réutiliser les extraits de code que vous trouvez utiles si vous les écrivez dans un petit fichier.

Rory Alsop
la source
1
Oui je suis d'accord. Mais je suis au niveau de base. Je n'écris rien d'utile, juste des tests de variables stupides et des maths, etc. Rien de digne de créer même un fichier. Merci quand même pour le conseil.
Même les calculs simples valent la peine d'être mis dans un fichier - si c'est 3 lignes ou plus, je le ferais moi-même dans vi. Même si c'est le cas, je me demande ce que j'ai fait plus tard.
Rory Alsop
1

Je viens de taper ce qui suit à l'invite de mon shell, et cela a très bien fonctionné:

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

La manière de taper plus d'une ligne de code dans l'interpréteur Python interactif est, bien, de taper plus d'une ligne de code dans l'interpréteur Python interactif. Je pense que ce serait assez bien pour vos besoins.

Il est vrai que vous obtiendrez une nouvelle invite après chaque ligne, ce qui signifie que si deux de vos lignes de code produisent une sortie, cette sortie sera séparée par des invites. Je suppose que c'est ce qui vous préoccupe, bien que l'exemple de votre question ne suggère pas 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
>>> 

Si c'est un problème, vous pouvez inclure vos multiples instructions dans une instruction (correctement en retrait!) 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
>>> 

(Je suggère, même si cela ne répond pas à votre question, que si vous écrivez du code suffisamment complexe pour que cela importe, vous devriez écrire des scripts. Peut-être que vous avez commencé à le faire en un an et demi depuis que vous avez posté la question.)

Keith Thompson
la source
0

Je venais de parcourir la réponse que vous avez obtenue.J'ai continué à expérimenter en mettant différents symboles.J'ai finalement eu la bonne syntaxe pour l'écrire.Ressayez ce qui suit

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

cela vous donnera un résultat

more string

3

sans aucune erreur

je viens d'utiliser ';' pour le faire écrire dans une autre ligne

j'espère que ma réponse pourra vous aider

Lame curieuse
la source
0

Laissez simplement le shell et ouvrez un nouveau fichier éditeur. C'est-à-dire aller dans un fichier et ouvrir un nouveau fichier. Écrivez autant de lignes de codes que vous le souhaitez.

Hemant Gautam
la source
-2

Aux trois points, assurez-vous d'appuyer sur la touche "tab" avant d'entrer la commande suivante. Vous pouvez continuer à écrire autant de commandes de cette façon. Ainsi, lorsque vous appuyez sur Entrée après avoir écrit votre deuxième ligne de code, l'interpréteur vous permet d'entrer la troisième ligne de code ... comme dans l'exemple de Fibonacci ci-dessous (du tutoriel):

a, b = 0,1 tandis que b <10: ... print (b) # Si vous entrez la commande d'impression immédiatement après les points et appuyez sur la touche Entrée à la fin, u obtiendra une erreur d'indentation. Au lieu de cela, appuyez sur l'onglet après les trois points, puis écrivez votre code et appuyez sur la touche Entrée, cela vous permettra d'entrer la troisième ligne de code, etc. Regardez l'exemple ci-dessous (du tutoriel):

a, b = 0,1 # Suivi par la touche entrée tandis que b <10: # Suivi par la touche entrée ... imprimer (b) # Suivi par la touche entrée. notez l'onglet après les trois points ... a, b = b, a + b # Suivi de la touche entrée ... touche entrée # Plus de commandes à saisir

vous verrez le résultat du prog ci-dessus

Shashi
la source