De même à cette question, je voudrais évaluer (en mode org) des blocs de code source Python contenant des instructions "d'entrée" mais je ne trouve pas de moyen d'avoir une évaluation interactive (avec une entrée utilisateur) pendant l'évaluation ou de lui donner une entrée connue à l'avance (stocké dans un fichier par exemple).
Ma contrainte est d'utiliser explicitement l' input
instruction puisque tout cela devrait être inclus dans un manuel pour les étudiants.
Exemple de code:
#+BEGIN_SRC python :results output
a= input("Value")
print(a)
#+END_SRC
Est-il possible d'avoir une telle évaluation interactive ou de la simuler (en donnant au code source une fausse entrée)?
export
pour générer votre exemple de code pour les étudiants dans un autre format, par exemple html?noweb
du mode org qui vous permettra de tester et d'exporter votre code avec les résultats.Réponses:
Voici une approche alternative qui utilise un fichier enchevêtré non exporté pour remplacer la fonction d'entrée.
la source
Évaluez les
python
blocs de code à l'aide de la programmation alphabétisée en mode org.Utilisez l'en-
:var
tête pour affecter des variables et tester votre code.Exemple 1 - impression (a)
Attribuer
hello world
àa
.Exemple 2 -
print(a + b)
Attribuer
1
àa
.Attribuer
2
àb
.Exemple 3 -
print(a,b,c)
Value of a
entrerThanks
Value of b
entrer4
.Lorsque vous êtes invité à
Value of c
entreryour question
.Exemple 1 -
print(a)
Attribuer
hello world
àa
.Exemple 2 -
print(a + b)
1
àa
.Attribuer
2
àb
.Exemple 3 -
print(a,b,c)
Value of a
entrerThanks
Value of b
entrer4
.Lorsque vous êtes invité à
Value of c
entreryour question
.la source
noweb
, en mode org, est incroyable et incroyablement utile! Veuillez me faire savoir si vous souhaitez des exemples de code supplémentaires. Si vous avez besoin de quelque chose qui ne rentre pas bien dans le format Q&A, je suis heureux de poster sur mon référentiel GitHub.Je ne pense pas qu'il soit possible d'obtenir une entrée Python vraiment interactive avec org-babel.
Vous pouvez utiliser un préambule pour redéfinir la fonction d'entrée afin qu'elle renvoie ce que vous voulez simuler l'utilisation de l'entrée, par exemple ici, nous la faisons ressembler à l'utilisateur tapé "3".
Selon ce que les élèves voient qui est exporté, ils peuvent ne pas voir que vous avez fait cela.
la source
En complément de la solution de John Kitchin, je propose d'utiliser un générateur pour fournir les valeurs successives qui "alimenteront" les
input(...)
fonctions et retournerstr
systématiquement un objet.la source