如何更改:
fv (x,y,z) begin print x;;; print y ;;; return x + y + z end;
x = fv(2,34,5)
g (x) begin y = x + 45 ;;; return y end;
z = g(23)
r = 53
h (x,y,z,r) begin print x;;; print y ;;; print z;;;print r;;;return x + y + z end;
对此:
def fv (x,y,z) :
print x
print y
return x + y + z
x = fv(2,34,5)
def g (x) :
y = x + 45
return y
z = g(23)
r = 53
def h (x,y,z,r) :
print x
print y
print z
print r
return x + y + z
我不是要求完整的代码或做我的作业,我只需要建议和/或样本或方向如何做到这一点。
答案 0 :(得分:3)
因为你只是在寻找起始提示,这可能是作业......
对各种line-enders(例如“begin”,“;;;”,“end;”)执行replace(),将它们转换为“\ n”,其中一行可能为“:”。
将生成的文本拆分为.split(“\ n”)
行走线以调整线前缀(“def”,缩进)
使用“\ n”.join(...)
将线条重新组合在一起编写输出文本
答案 1 :(得分:1)
这可以让你开始
for line in code:
line = line.replace( "begin", " :\n" + " " * 4 ).replace( ";;;", "\n" + " " * 4 ).replace( "end;", "\n" + " " * 4 )
答案 2 :(得分:0)
例如,查看sed
命令行工具。知道你希望/允许使用哪些工具有点难......
答案 3 :(得分:0)
嗯,对于您open()
文件的初学者,请使用其readlines()
方法将其放入字符串列表中。
从那里你可以遍历该列表并使用split(";;;")
方法的组合或来自re
模块的更复杂的字符串。
答案 4 :(得分:0)
这可能有点矫枉过正,但请看一下Ply解析器项目。您将需要了解正则表达式和Backus Naur格式。