42 votos

¿Cómo puedo escribir código de más de 1 línea en el intérprete de Python?

Tengo un problema de codificación de Python en la terminal. Sólo estoy aprendiendo lo básico así que no tengo necesidad de crear archivos .py.

En la terminal puedo ejecutar una línea de código en el intérprete de Python, pero ¿cómo puedo escribir más de una línea?

Obviamente si le doy a enter, entra el comando y no baja de línea.

Sólo quiero probar lo siguiente en la terminal:

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

38voto

Charlie Hargood Puntos 26

El truco es - similar a lo que se haría en bash por ejemplo, para añadir una barra invertida al final.

Ejemplo:

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

Si escribe un \ le pedirá que ... para introducir el código en la siguiente línea, por así decirlo. Sin embargo, esto es lo que ocurre automáticamente cuando se crea una función o una definición de clase, es decir, los momentos en que realmente Necesito una nueva línea, así que nunca hay un uso realmente bueno para eso, o al menos ninguno que yo conozca.


Para todo lo demás, hay que escribir una línea tras otra. La forma en que funciona un intérprete es que, bueno, interpreta cada línea que le das. Ni más ni menos. Sólo "actuará" cuando vea una nueva línea, por lo que le dirá al intérprete que ejecute lo que le has dado. La barra invertida única evitará que el intérprete reciba alguna vez un carácter de nueva línea (es decir, no sabrá que usted ha pulsado Enter ), pero acabará recibiendo una.

El intérprete de Python tiene capacidades avanzadas cuando se utiliza GNU readline, como Emacs o las combinaciones de teclas de estilo vi para navegar dentro de una línea (por ejemplo Ctrl-A ). Sin embargo, sólo funcionan en la línea actual. El historial también está ahí, sólo hay que probar y pulsar .

Pero, aparte de eso, es probable que quieras usar archivos fuente adecuados si quieres ejecutar más de una línea de código a la vez.

10voto

Garrett Puntos 127

¿Qué tal si utilizamos ;\ ? El punto y coma señala el final de un comando y la barra invertida indica que continuamos en la línea siguiente. Por ejemplo, escriba python en la línea de comandos para entrar en el intérprete de Python, luego

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

debería dar una salida de

0
4

4voto

AceAero6 Puntos 21

Estaba revisando la respuesta que has obtenido.Seguí experimentando poniendo diferentes símbolos.Finalmente conseguí la sintaxis correcta para escribirlo.Prueba lo siguiente

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

esto le dará un resultado

more string

3

sin ningún error

Acabo de utilizar ';' para hacer que se escriba en otra línea

espero que mi respuesta le ayude

2voto

Rory Alsop Puntos 2709

Simplemente, si quieres aprender y quieres ejecutar más de una línea la escribes en un archivo .py.

El método de la barra invertida final es bueno cuando se quiere ejecutar rápidamente una serie de comandos, pero no ayuda cuando se está aprendiendo.

Podrás desarrollar mejor el código, editar comandos individuales sin preocuparte por las faltas de ortografía y reutilizar los fragmentos de código que te resulten útiles si los escribes en un pequeño archivo.

1voto

Keith Thompson Puntos 3397

Acabo de escribir lo siguiente en mi Shell prompt, y ha funcionado bien:

$ 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 forma de escribir más de una línea de código en el intérprete interactivo de Python es, bueno, escribir más de una línea de código en el intérprete interactivo de Python. Creo que eso es suficiente para tus propósitos.

Es cierto que obtendrás un nuevo prompt después de cada línea, lo que significa que si dos de tus líneas de código producen salida, esa salida estará separada por prompts. Supongo que eso es lo que te preocupa, aunque el ejemplo de tu pregunta no lo sugiere:

$ 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 eso es un problema, puede encerrar sus declaraciones múltiples en un (¡debidamente sangrado!) if declaración:

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

(Yo sugeriría, aunque no responda a tu pregunta, que si estás escribiendo código lo suficientemente complejo como para que esto importe, deberías escribir scripts. Tal vez hayas empezado a hacerlo en el año y medio transcurrido desde que publicaste la pregunta).

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: