从包含数字和“+”和“ - ”的txt算术序列中读取,然后打印该序列的结果。
例如:
input: 1+20-1+18=
output: 38
答案 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('=')])