plus/minus python 的运算符 ±

plus/minus operator for python ±

我正在寻找在 python 2 或 3 中执行 plus/minus 操作的方法。我不知道命令或运算符,也找不到执行此操作的命令或运算符.

我是不是漏掉了什么?

我想你想要这样的等式;

除非你不使用 SymPy,否则没有运算符,你唯一能做的就是创建一个 if 语句并找到每个乘数。

另一种可能:uncertainties是一个计算容错的模块,即

(2.1 +/- 0.05) + (0.6 +/- 0.05)    # => (2.7 +/- 0.1)

可以写成

from uncertainties import ufloat

ufloat(2.1, 0.05) + ufloat(0.6, 0.05)

编辑: 我得到了一些奇怪的结果,经过更多的尝试我弄清楚了原因:指定的错误不是公差(硬加性限制,如工程蓝图)但标准偏差值 - 这就是为什么上面的计算结果

ufloat(2.7, 0.07071)    # not 0.1 as I expected!

SymPy 中还没有这样的对象(如您所见,有一个问题提示 https://github.com/sympy/sympy/issues/5305)。不过,这并不难效仿。只需创建一个 Symbol,最后分别用 +1 和 -1 交换它。喜欢

pm = Symbol(u'±') # The u is not needed in Python 3. I used ± just for pretty printing purposes. It has no special meaning.
expr = 1 + pm*x # Or whatever
# Do some stuff
exprpos = expr.subs(pm, 1)
exprneg = expr.subs(pm, -1)

您也可以从一开始就跟踪两个方程式。

如果您碰巧使用的是 matplotlib,则可以像使用 Latex 一样打印数学表达式。对于 +/- 符号,您可以使用:

print( r"value $\pm$ error" )

其中 r 将字符串转换为原始格式,$ 符号围绕字符串中的数学方程式部分。这部分中的任何单词都将采用不同的字体,并且它们之间不会有空格,除非用正确的代码明确指出。这可以在 matplotlib documentation.

的相关页面上找到

抱歉,如果这太小众了,但我偶然发现了这个问题,试图找到这个答案。

而不是计算像

这样的表达式
s1 = sqrt((125 + 10 * sqrt(19)) / 366)
s2 = sqrt((125 - 10 * sqrt(19)) / 366)

你可以使用

import numpy as np

pm = np.array([+1, -1])
s1, s2 = sqrt((125 + pm * 10 * sqrt(19)) / 366)

如果您要打印 ± 符号,只需使用:

print(u"\u00B1")

而不是计算像

这样的表达式
s1 = sqrt((125.0 + 10.0*sqrt(19)) / 366.0)
s2 = sqrt((125.0 - 10.0*sqrt(19)) / 366.0)

你可以使用

r = 10.0*sqrt(19)
s1, s2 = (sqrt((125.0 + i) / 366.0) for i in (r, -r))

这是基于Nico's ,但使用生成器表达式而不是 NumPy

plus/minus 公差测试可以使用差值和绝对值与您希望测试的公差进行比较。类似于:

tst_data = Number you wish to test
norm = Target number
tolerance = Whatever the allowed tolerance is.

if abs(tst_data - norm) <= tolerance:
do stuff

使用 abs 函数允许测试 return +/- 在公差范围内,如 True