为什么在计算中不使用所有面积元素?

时间:2019-07-18 15:03:59

标签: python division

我正在尝试使用以下公式进行一些简单的计算,以得出计算得出的泄漏量:calculatedLeakage=((averageCurrent/(averageVoltage/1000.0))/area[z]) 但是我注意到公式中仅使用了列表区域的最后一个元素,我不知道为什么(area是从另一个文件导入的列表)。

for j in range(0,len(mm),1):
    voltageValue=data3[mm[j],i]
    currentValue=data3[mm[j],i+2]
    sumVoltage += voltageValue
    sumCurrent += currentValue
    if (len(mm)!=0):
        averageVoltage = sumVoltage/len(mm)
        averageCurrent = sumCurrent/len(mm)
        for z in range(0,len(area),1):
            calculatedLeakage=((averageCurrent/(averageVoltage/1000.0))/area[z])
            calculatedLeakage=(round(calculatedLeakage,1))
    if (headerFlag==True):
        all.append([header[1:5],header[10:11],header[15:16],calculatedLeakage])
        all2=pd.DataFrame(all)
    else:
        all.append([calculatedLeakage])
        all2=pd.DataFrame(all)
return(all2)    

就所有正确的地方而言,我得到的结果都是完美的,但是我注意到我的公式仅使用area的最后一个元素进行除法。

2 个答案:

答案 0 :(得分:0)

您的行calculatedLeakage=((averageCurrent/(averageVoltage/1000.0))/area[z])在for循环内。 area的每个元素都用于除法,但每次都只覆盖结果。

我认为您可能想做的事情是这样的:

if (len(mm)!=0):
    averageVoltage = sumVoltage/len(mm)
    averageCurrent = sumCurrent/len(mm)
    calculatedLeakage=((averageCurrent/(averageVoltage/1000.0))/area[0])
    for z in range(1,len(area),1):
        calculatedLeakage/=area[z]
    calculatedLeakage=(round(calculatedLeakage,1))

答案 1 :(得分:0)

您还需要将all.append语句也添加到第一个if语句中。

if (len(mm)!=0):
        averageVoltage = sumVoltage/len(mm)
        averageCurrent = sumCurrent/len(mm)
        for z in range(0,len(area),1):
            # print ("z",z)
            calculatedLeakage=((averageCurrent/(averageVoltage/1000.0))/area[z])
            # print ("area",area[z])
            calculatedLeakage=(round(calculatedLeakage,1))
            all.append(calculatedLeakage)