给出以下输入文件:
a = 2
b = 3
c = a * b
d = c + 4
我想通过生成的python程序运行上面的输入文件 以下输出:
a = 2
b = 3
c = a * b = 6
d = c + 4 = 10
输入文件是合法的python程序,但输出是python with 额外输出,将每个变量的值打印到右侧 声明/分配。或者,输出可能如下所示:
a = 2
b = 3
c = a * b
c = 6
d = c + 4
d = 10
这样做的动机是实现一个简单的“工程师的笔记本” 允许计算链而不需要打印语句 在源文件中。
这是修改D.Shawley(非常感谢)贡献后的所得:
#! /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
答案 0 :(得分:0)
以下是一个好的开始。它不是非常Pythonic,但它非常接近。它不区分新添加的变量和修改过的变量。
#! /usr/bin/env python
import sys
locals = dict()
for line in sys.stdin:
saved = locals.copy()
stmt = compile(line, '<stdin>', 'single')
eval(stmt, None, locals)
print line.strip(),
for (k,v) in locals.iteritems():
if k not in saved:
print '=', v,
print