[英]How to accomplish this in python?
给定以下输入文件:
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,带有额外的输出,该输出将每个变量的值打印在声明/赋值的右侧。 或者,输出可能类似于:
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
如下所示是一个好的开始。 它不是很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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.