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

35

Tengo un problema al codificar Python en la terminal. Solo estoy aprendiendo conceptos básicos, 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 escribo más de una línea?

Obviamente, si presiono enter, ingresa el comando y no baja una línea.

Solo 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)

fuente
1
Sospecho que tienes problemas con la 'sangría'. A. escriba 'python'. B. >>> aparece. C. Para ejecutar un script, el script debe estar sangrado correctamente con 'pestañas'.
r4.
3
No pregunté si mi manera si el aprendizaje es correcto o no ... he hecho una pregunta específica, si conoce la respuesta por favor ... si no ...

Respuestas:

32

Agregar una barra diagonal inversa ( \)

El truco es, similar a lo que haría en bash, por ejemplo, agregar una barra diagonal inversa. Por ejemplo, si quiero imprimir un 1:

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

Si escribe un \, Python le pedirá ...(líneas de continuación) que ingrese el código en la siguiente línea, por así decirlo.

Nota al margen: esto es lo que sucede automáticamente cuando crea una definición de función o clase, es decir, los momentos en que realmente necesita una nueva línea, por lo que nunca hay un uso realmente bueno para eso, o al menos ninguno que yo sepa. En otras palabras, Python es lo suficientemente inteligente como para ser consciente de que necesita líneas de continuación cuando ingresa una nueva definición de función u otras construcciones similares (por ejemplo if:). En estos casos automáticos, tenga en cuenta que necesita ingresar una línea vacía \para decirle a Python que ya ha terminado.

Para todo lo demás, debe escribir una línea tras otra. La forma en que funciona un intérprete es que, bueno, interpreta cada línea que lo alimenta. Ni más ni menos. Solo "actuará" cuando vea una nueva línea, por lo tanto, le pedirá al intérprete que ejecute lo que le dio. La barra invertida simple evitará que el intérprete reciba un carácter de nueva línea (es decir, no sabrá que realmente presionó Enter), pero eventualmente recibirá uno.

El intérprete de Python tiene capacidades avanzadas cuando usa la línea de lectura de GNU, como Emacs o las combinaciones de teclas de estilo vi para navegar dentro de una línea (por ejemplo Ctrl-A). Sin embargo, estos solo funcionan en la línea actual. La historia también está ahí, solo intenta y presiona .

¿Qué pasa si quiero correr líneas complicadas una y otra vez?

Probablemente desee utilizar los archivos fuente adecuados si desea ejecutar más de una línea de código a la vez.

O use los cuadernos Jupyter , que ofrecen una excelente forma interactiva de crear código Python con un intérprete incorporado. Puede escribir código como lo haría en un editor de código fuente, pero puede elegir qué líneas se interpretan juntas. Luego puede ejecutar solo partes del código de forma selectiva. La mejor manera es tratar de ver si se ajusta a su flujo de trabajo.

slhck
fuente
:) bonito funciona para la primera línea, pero ¿qué pasa si quiero más líneas? La segunda barra invertida final genera un error de sintaxis.
Entonces, ¿qué no funciona exactamente ? Simplemente seleccione y copie esas líneas, luego péguelas en la terminal. Se ejecutarán de arriba a abajo como en un script, ya que el intérprete analiza la nueva línea. ¿Cual es el problema?
slhck
1
Me gustaría escribirlos directamente en la terminal, en lugar de escribirlos en el editor y pegarlos allí ... parece una pérdida de tiempo :)
Luego solo tienes que escribir una línea tras otra. No hay otra manera. Es intérprete. Le solicitará líneas de continuación solo cuando realmente las necesite.
slhck
7

¿Qué hay de usar ;\? El punto y coma señala el final de un comando y la barra diagonal inversa indica que continuamos en la línea siguiente. Por ejemplo, escriba pythonen la línea de comando para ingresar al intérprete de Python, luego

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

debería dar una salida de

0
4
Garrett
fuente
2

En pocas palabras, si desea aprender y desea ejecutar más de una línea, escríbala en un archivo .py.

El método de barra diagonal inversa es bueno cuando desea ejecutar rápidamente una serie de comandos, pero no ayuda cuando está aprendiendo.

Podrá desarrollar mejor el código, editar comandos individuales sin preocuparse por errores ortográficos y reutilizar fragmentos de código que le resulten útiles si los escribe en un archivo pequeño.

Rory Alsop
fuente
1
Sí estoy de acuerdo. Pero estoy en un nivel básico. No escribo nada útil, solo pruebas estúpidas de variables y matemáticas, etc. Nada digno de siquiera crear un archivo. Gracias por el consejo sin embargo.
Incluso las matemáticas simples valen la pena ponerlas en un archivo; si son 3 o más líneas, lo haría yo mismo en vi. Aun así, está ahí si me pregunto qué hice después.
Rory Alsop
1

Acabo de escribir lo siguiente en mi indicador de shell, y funcionó 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 sería lo suficientemente bueno para tus propósitos.

Es cierto que obtendrá un nuevo aviso después de cada línea, lo que significa que si dos de sus líneas de código producen resultados, ese resultado estará separado por avisos. Supongo que eso es lo que le preocupa, aunque el ejemplo en su pregunta no sugiere 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 eso es un problema, puede incluir sus múltiples declaraciones en una declaración (¡correctamente sangrada!) 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
>>> 

(Sugeriría, a pesar de que no responde a su pregunta, que si está escribiendo un código lo suficientemente complejo como para que esto importe, debería estar escribiendo guiones. Quizás haya comenzado a hacerlo en el año y medio desde que publicó la pregunta).

Keith Thompson
fuente
0

Estaba revisando la respuesta que obtuviste. Seguí experimentando poniendo diferentes símbolos. Finalmente obtuve la sintaxis correcta para escribirla. Intenta lo siguiente

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

esto te dará un resultado

more string

3

sin ningún error

acabo de usar ';' para hacerlo escribir en otra línea

espero que mi respuesta te pueda ayudar

Hoja curiosa
fuente
0

Simplemente salga del shell y abra un nuevo archivo de editor. Es decir, ir al archivo y abrir un nuevo archivo. Escriba tantas líneas de códigos como desee.

Hemant Gautam
fuente
-2

En los tres puntos, asegúrese de presionar la tecla "tab" antes de ingresar el siguiente comando. Puede continuar escribiendo tantos comandos de esa manera. Entonces, cuando presiona enter después de escribir su segunda línea de código, el intérprete le permite ingresar la tercera línea de código ... como en el ejemplo de Fibonacci a continuación (del tutorial):

a, b = 0,1 mientras b <10: ... print (b) # Si ingresas el comando de impresión inmediatamente después de los puntos y presionas la tecla enter al final, obtendrás un error de sangría. En su lugar, presione la pestaña después de los tres puntos, luego escriba su código y presione la tecla Intro, le permitirá ingresar la tercera línea de código y así sucesivamente. Mira el siguiente ejemplo (del tutorial):

a, b = 0,1 # Seguido por la tecla enter mientras que b <10: # Seguido por la tecla enter ... print (b) # Seguido por la tecla enter. observe la pestaña después de los tres puntos ... a, b = b, a + b # Seguido por la tecla enter ... ingrese la tecla # No hay más comandos para ingresar

verá el resultado del programa anterior

Shashi
fuente