【发布时间】:2010-05-31 17:22:38
【问题描述】:
我遇到了 python 的问题(对不起,我之前的个人感受......:P)。
我有一个 txt 文件,它包含一种自定义语言,我必须将其翻译成可工作的 Python 代码。
输入:
import sys
n = int(sys.argv[1]) ;;print "Beginning of the program!"
LOOP i in range(1,n) {print "The number:";;print i}
BRANCH n < 5 {print n ;;print "less than 5"}
想要的输出看起来完全像这样:
import sys
n = int(sys.argv[1])
print "Beginning of the program!"
for i in range(1,n) :
print "The number:"
print i
if n < 5 :
print n
print "less than 5"
从参数中读取输入文件的名称。输出文件是 out.py。如果参数错误,它会给出错误消息。这 ;;表示换行。
当我尝试这样做时,我创建了一个数组,我将所有行都读入其中,用“”分隔。然后我想把它从我不需要的标记上去掉。我做了2个循环,一个用于线条,一个用于单词。于是我开始换东西。一切都很顺利,直到到达 } 标记。它找到了它,但它不能替换或剥离它。我不知道该怎么办了。
我的代码(很乱,目前我没有写入文件):
f = open('test.txt', 'r')
#g = open('out.py', 'w')
allWords = map(lambda l: l.split(" "), f.readlines())
for i in range(len(allWords)):
vanfor = -1
vanif = -1
for j in range(len(allWords[i])):
a=allWords[i][j]
a=a.replace(";;","\n")
a=a.replace("CIKLUS","for")
a=a.replace("ELAGAZAS","if")
if a == "for":
allWords[i][j+3] = str(allWords[i][j+3])+" :\n"
if a == "if":
allWords[i][j+3] = str(allWords[i][j+3])+" :\n"
zarojel=a.find('}')
if zarojel>-1:
a=a.rstrip('}')
a=a.replace("}","")
a=a.replace("{","")
if vanfor == -1:
vanfor=a.find("for")
if vanif == -1:
vanif=a.find("if")
if (vanfor > -1) or (vanif > -1):
a=a.replace("print"," print")
if j != (len(allWords[i]))-1:
allWords[i][j]=a+" "
print allWords[i][j],
有人可以帮帮我吗? 提前致谢!
【问题讨论】:
-
1.除了您想要的输出示例之外,您还没有发布您的 Python 代码。 2. 想责怪 Python 却向欣赏 Python 的人求助? 3. 不,Python 和它的 re 库没有 } 字符的特殊问题——你做错了。 4.这显然是功课;您应该在问题中添加“作业”标签。
-
在我上大学的时候,我的算法教授有一个严格的政策:如果你到他的办公室寻求帮助,但没有你已经尝试过的例子,我们会告诉学生们离开。同样的道理:出去。
标签: python compiler-construction programming-languages