De manera similar a esta pregunta, me gustaría evaluar (en modo org.) Los bloques de código fuente de Python que contienen instrucciones de "entrada", pero no puedo encontrar una manera de tener una evaluación interactiva (con la entrada del usuario) durante la evaluación o darle alguna entrada conocida por adelantado (almacenado en un archivo, por ejemplo).
Mi restricción es usar explícitamente la input
instrucción ya que todo esto debería incluirse en un libro de texto para estudiantes.
Ejemplo de código:
#+BEGIN_SRC python :results output
a= input("Value")
print(a)
#+END_SRC
¿Es posible tener una evaluación tan interactiva o simularla (dando al código fuente una entrada falsa)?
export
para generar su código de ejemplo para los estudiantes en algún otro formato, por ejemplo, html?noweb
, del modo org que le permitirá probar y exportar su código con resultados.Respuestas:
Aquí hay un enfoque alternativo que utiliza un archivo enredado no exportado para reemplazar la función de entrada.
fuente
Evaluar
python
bloques de código utilizando programación alfabetizada en modo org.Use el
:var
encabezado para asignar variables y probar su código.Ejemplo 1 - imprimir (a)
Asignar
hello world
aa
.Ejemplo 2 -
print(a + b)
Asignar
1
aa
.Asignar
2
ab
.Ejemplo 3 -
print(a,b,c)
Value of a
ingresarThanks
Value of b
ingresar4
.Cuando se le solicite
Value of c
ingresaryour question
.Ejemplo 1 -
print(a)
Asignar
hello world
aa
.Ejemplo 2 -
print(a + b)
1
aa
.Asignar
2
ab
.Ejemplo 3 -
print(a,b,c)
Value of a
ingresarThanks
Value of b
ingresar4
.Cuando se le solicite
Value of c
ingresaryour question
.fuente
noweb
, en las funciones del modo org es increíble e increíblemente útil! Avíseme si desea ejemplos de código adicionales. Si necesita algo que no encaja bien en el formato de preguntas y respuestas, me complace publicarlo en mi repositorio de GitHub.No creo que sea posible obtener una entrada de Python verdaderamente interactiva con org-babel.
Puede usar un preámbulo para redefinir la función de entrada para que devuelva lo que desea simular el uso de la entrada, por ejemplo, aquí hacemos que parezca que el usuario escribió "3".
Dependiendo de lo que los alumnos vean que se exporta, es posible que no vean que usted ha hecho esto.
fuente
Como complemento de la solución de John Kitchin, propongo usar un generador para proporcionar los valores sucesivos que "alimentarán" las
input(...)
funciones y devolver unstr
objeto sistemáticamente.fuente