我正试图编写一个程序,从一个txt文件中求解简单的数学方程,并将答案放在一个不同的txt文件中。例如:
qustions.txt:
1+2=
4+7=
10*2=
10/2=
然后答案将在一个不同的txt文件中。
answers.txt:
1+2=3
4+7=11
10*2=20
10/2=5
所以在文本文件中有简单的数学方程,在另一个文件中有答案。数学方程仅为数运算符数。
发布于 2019-08-22 10:00:22
您可以使用eval
计算等号左边的所有内容。
with open('questions.txt') as fp:
qs = fp.readlines()
answers = [eval(q.split('=')[0]) for q in qs if q.strip()]
with open('answers.txt', 'w') as fp:
for q, a in zip(qs, answers):
fp.write(q.strip() + str(a) + '\n')
answers
是等号左边求值表达式的列表。eval
接受给它的任何字符串,并尝试以命令的形式在Python中运行它。q.split('=')[0]
将每个问题分成两部分:等号左边的所有内容(第0部分)和右边的所有内容(第1部分)。我们只抓住了要评估的第一部分。行的其余部分将遍历文件中的问题,并检查以确保该行不只是一个额外的空行。
使用zip
将每个问题q
与相应的答案a
相匹配,因此for循环产生第一个Q和a,然后第二个Q和a等。fp
是我们为编写而打开的文件对象。fp.write
告诉python将字符串参数写入磁盘。我使用q.strip()
删除换行符,将答案作为字符串追加,然后将换行符添加到末尾。
发布于 2019-08-22 12:11:05
我就是这样做的:
with open('questions.txt') as fp:
qs = fp.readlines() # reading the qustion file
with open('answers.txt', 'w') as fp:# writing the text file by the name fp
for q in qs:
Deleteequal = q.split('=')
a = eval(Deleteequal[0]) # always going to be line 0 because I am reading a line by line
f = q + str(a)
f = f.replace("\n", "") # for some reason it printed the numbers really weird if I've just did f.write(q+str(a)+'\n') the result would be 1 line down for some reason
fp.write(f)
fp.write('\n')
# str(a) to write the final answer
https://stackoverflow.com/questions/57606627
复制相似问题