从文件中读取算术序列并解决它

时间:2013-11-03 15:37:04

标签: python math numbers

从包含数字和“+”和“ - ”的txt算术序列中读取,然后打印该序列的结果。 例如:
input: 1+20-1+18=

output: 38

1 个答案:

答案 0 :(得分:1)

 with open('myFile.txt', 'r') as inFile:
        for line in inFile:
            print eval(line)

with会自动为您关闭文件。
open将第一个参数作为文件名,r表示这是只读的 as inFile只是意味着我们将此文件称为inFile

eval将自动评估每一行,就好像它是Python代码一样,但是您可以想象它可能非常不安全。例如,如果您导入了os,则可以输入代码来删除计算机上的文件。所以要小心。

我不确定这是否是一个不错的选择,但它肯定至少有点安全:
您可以将输入读入字符串并使用正则表达式来确保它只是数字和数学运算符然后将其提供给eval,例如:

regex = re.compile(r'^[0-9.*/-+]+=$')

修改
在输入结尾处没有看到=,因此您应该通过line.index('=')找到索引并从eval

中排除索引来删除它

如果您知道每一行最后都会有=,那么只需更改

print eval(line)来:print eval(line[:line.index('=')])