的Python我如何在Ruby中重寫這些數學python函數?
order = log(max(abs(s), 1), 10)
這是我到目前爲止,但「最大」的事情是什麼困惑我。
order = Math.log10(s.abs)
而這其中也
sign = 1 if s > 0 else -1 if s < 0 else 0
我不太知道從哪裏開始就這一個,因爲我不明白Python語法
的Python我如何在Ruby中重寫這些數學python函數?
order = log(max(abs(s), 1), 10)
這是我到目前爲止,但「最大」的事情是什麼困惑我。
order = Math.log10(s.abs)
而這其中也
sign = 1 if s > 0 else -1 if s < 0 else 0
我不太知道從哪裏開始就這一個,因爲我不明白Python語法
對於第一個你要Math.log和Enumerable#max。
Math.log [s.abs, 1].max, 10
Math.log10 [s.abs, 1].max # or use Math.log10 and skip passing the base
對於以後,有幾種方式來表達它。使用if
作爲表達式,使用三元運算符test ? ifval : elsval
,或者最succintly的「宇宙飛船」比較<=>
sign = if s > 0 then 1 elsif s < 0 then -1 else 0 end
sign = s > 0 ? 1 : s < 0 ? -1 : 0
sign = s <=> 0
+1代表飛船操作員。 – steenslag 2012-03-27 18:42:37
max(abs(s), 1)
回報abs(s)
或1
,以較大者爲準。
sign = 1 if s > 0 else -1 if s < 0 else 0
可以改寫爲
if s > 0:
sign = 1
elif s < 0:
sign = -1
else:
sign = 0
我刪除了你的標籤。這個與Mathematica有關的問題是什麼? – halirutan 2012-03-27 18:04:23
在Python中,可以將'sign'標記爲'(s> 0) - (s <0)'。也許這也適用於Ruby。 – 2012-03-27 18:14:48
@Sven不,這是'真假'或其他 - 甚至是那些對象。 – steenslag 2012-03-27 19:40:53