2017-09-06 27 views
-1

我創建供私人使用潛水錶,我快到了錯誤計算EADPython的處理配方與預期不同

def calculate_ead(self): 
    nitrogen = 100 - self.mix 
    EAD = (self.depth + 10) * nitrogen/0.79 - 10 
    self.depth = int(EAD) 

這種計算散發出一股瘋狂的高數(上千萬)。我得到了this網站的公式和英尺欄的計算公式。當混合物高於21時的計算結果應該比深度值低。

深度和其他東西的我的初始化:

def __init__(self, d=35, t=30, m=21, p=1.6): 
     self.depth = int(d) # Depth 
     self.time = int(t) # Time 
     self.mix = int(m) # Mix (Oxygen integer) 
     self.max_po2 = float(p) 

混合在這種情況下,因此當一百通過減去氧氣的百分比它應該給氮的分數爲此式EAD =(深度+ 10)×N2的分數/ 0.79 - 10

告訴我我做錯了什麼?從交互式shell 樣品測試:

depth = 90 
mix = 36 
nitrogen = 100 - mix 
EAD = (depth + 10) * nitrogen/0.79 + 10 
EAD 
8111.26582278481 

預期輸出:

>>>depth = 90 
>>>mix = 36 
>>>nitrogen = 100 - mix 
>>>EAD = (depth + 10) * nitrogen/0.79 + 10 
>>>EAD 
67 

格式的數字: self.depth爲自然數(25,30,35) self.mix是一個自然數(30,45,60)

+0

你說「以英尺計算」部分,但你的常數來自「以米計算」。你確定'self.mix'是百分比(即20)而不是分數(即0.20)? –

+0

你爲什麼期望67?你基本上乘以100(深度+10)與81(氮/0.79),然後加10,所以8111對我來說似乎很正確? :-) 順便說一下,在你的代碼中,你會做到 - 最後10個,但在你的例子中,你以+10結束,所以似乎甚至更混亂? –

+0

@hughbothwell是對的,行應該是mix = 0.36;氮氣= 1 - 混合 – madtyn

回答

1

在你提供的鏈接, 等效空氣深度可以英尺計算深度如下:

EAD =(深度+ 33)×N2的分數/ 0.79 - 33

應用,你的號碼,

depth = 90 
mix = 36 
nitrogen = float(100 - mix) /100 #Fraction of N2 
EAD = (depth + 33) * nitrogen/0.79 - 33 
print EAD 

會給正確的結果在千丈。

Python 2.7.9 (default, Dec 10 2014, 12:24:55) [MSC v.1500 32 bit (Intel)] on win32 
Type "copyright", "credits" or "license()" for more information. 
>>> ================================ RESTART ================================ 
>>> 
66.6455696203 
>>> 
+0

好吧,似乎我打字的東西不好。我已經混合了公制公式和英制公式,並輸入了一個自然數而不是小數,所以...我的壞.. –

0

你應該使用N2的分數(%),請嘗試下面的代碼。

def calculate_ead(self): 
    nitrogen = (100 - self.mix)/100 
    EAD = (self.depth + 10) * nitrogen/0.79 - 10 
    self.depth = int(EAD)