我最近尝试对Python 3实现排名算法AllegSkill。
这是数学的样子:
这就是我写的:
t = (µw-µl)/c # those are used in
e = ε/c # multiple places.
σw_new = (σw**2 * (1 - (σw**2)/(c**2)*Wwin(t, e)) + γ**2)**.5
我实际上以为Python 3不幸的是不接受√
或²
作为变量名。
>>> √ = lambda x: x**.5
File "<stdin>", line 1
√ = lambda x: x**.5
^
SyntaxError: invalid character in identifier
我会发疯吗?我应该求助于仅ASCII版本吗?为什么?上面的仅ASCII版本难于验证与公式的等效性吗?
请注意,我了解一些Unicode字形看起来非常相似,而有些像(或者是▗▖)或like在书面代码中毫无意义。但是,数学或箭头字形几乎不是这种情况。
对于每个请求,仅ASCII版本将类似于以下内容:
winner_sigma_new = ( winner_sigma ** 2 *
( 1 -
( winner_sigma ** 2 -
general_uncertainty ** 2
) * Wwin(t,e)
) + dynamics ** 2
)**.5
...算法的每个步骤。
sqrt = lambda x: x**.5
让我一个功能(更准确地说,是一个可调用的) sqrt(2) => 1.41421356237
。