繁体   English   中英

如何在python中完成此操作?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM