Python处理公式与预期不同

时间:2017-09-06 19:04:42

标签: python python-3.6

我正在创建一个供私人使用的潜水表,我遇到了计算EAD的错误

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)

在这种情况下混合氧气的百分比,所以当减去100时,它应该给出该公式的氮气分数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)

2 个答案:

答案 0 :(得分: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

会在feets中给出正确的结果。

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
>>> 

答案 1 :(得分:0)

您应该使用N2的分数(%),请尝试以下代码。

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