Compte tenu du fichier d'entrée suivante:Comment accomplir cela en python?
a = 2
b = 3
c = a * b
d = c + 4
Je veux exécuter le fichier d'entrée ci-dessus grâce à un programme de python qui produit la sortie suivante:
a = 2
b = 3
c = a * b = 6
d = c + 4 = 10
Le fichier d'entrée est un programme python juridique, mais la sortie est en python avec une sortie supplémentaire qui imprime la valeur de chaque variable à droite de la déclaration/affectation . Sinon, la sortie pourrait ressembler à:
a = 2
b = 3
c = a * b
c = 6
d = c + 4
d = 10
La motivation est d'implémenter un simple « bloc-notes de l'ingénieur » qui permet chaînes de calculs sans avoir besoin des instructions d'impression dans le fichier source.
Voici ce que j'ai après avoir modifié la contribution de D.Shawley (très apprécié):
#! /usr/bin/env python
from math import *
import sys
locals = dict()
for line in sys.stdin:
line = line.strip()
if line == '':
continue
saved = locals.copy()
stmt = compile(line,'<stdin>','single')
eval(stmt,None,locals)
print line,
for (k,v) in locals.iteritems():
if k not in saved:
print '=', v,
print
veuillez formater votre code en utilisant les outils intégrés la prochaine fois. –
Aussi, pouvez-vous essayer de clarifier de quelle sorte d'interface nous parlons? Est-ce que la sortie sera un fichier texte? Affiché à l'écran? –
L'interface est: entrée à partir du fichier ou stdin, sortie à stdout. Exécution à partir de la ligne de commande linux. Jusqu'à présent, j'ai juste un script python avec des instructions d'impression qui vident les noms et le contenu des variables. Vous voulez créer un programme qui "auto-imprime" les noms de variables et leurs valeurs. – gregben