如何计算一列总和或者检验不等式?

如何计算一列总和或者检验不等式?

鉴于

34-2
34-5
34-3

我希望获得

34-2=28
34-5=29
34-3=31

或者,这也会有所帮助:鉴于:

34-2=5
34-5<=34
34-3=31

我希望获得

!   34-2=5
    34-5<=34
    34-3=31

哪里!有迹象表明不等式或等式为假。我正在寻找处理文本文件的东西。

答案1

第一起案件

perl -nle 'print $_."=".eval($_)' filewithexpressions
  • -n循环遍历线条。
  • -l 从 中删除换行符$_,但用换行符分隔输出行。
  • -e定义要运行的表达式。
  • $_是“当前行”的占位符。
  • .连接字符串。
  • eval()将采用一个字符串并将其作为代码进行评估,因此例如eval('5+8')返回13

第二种情况

正如我对原始问题的评论中所述,在文件中使用双等号:

perl -ne 'print eval($_)?" ":"!",$_' filewithequalities

和以前总体一样。

  • -l是不需要/不想要的,因为在这种情况下换行符会自行处理。
  • ?:构造是一个三元运算符如果前面的表达式为真,则返回空格,否则返回感叹号。

答案2

下面是一个用于处理问题第一部分的 Python 脚本:

import sys
for line in sys.stdin:
    print "%s=%s" % (line.rstrip(), eval(line))

将上述代码放入test.py,将输入放入test.dat,然后像这样运行:

python test.py < test.txt

我假设是类 Unix 操作系统。请注意,将输入传递给任何正在运行的脚本都是很危险的eval--- 不要将未知数据传递给此脚本。

相关内容