首页 > 解决方案 > Python中的内存错误或空返回列表

问题描述

第一个函数计算湖的深度,并将体积作为参数。在第二个中,我必须传递一个音量和一个时间增量(我必须增加),它会返回两个列表。第一个列表:时间增量,此列表中的最后一个时间/元素对应于体积 = 0,此时湖为空。第二个列表:每次对应的深度。例如,对于 dt = 1000s 秒,z(depth) = 10m,对于 dt = 150000s,dt = 0m。抱歉,流体力学太多了,我只想说清楚一点。当我调用函数 abfluss 时,它会在 V0 较小时返回空列表,或者在 v0 较大时显示内存错误。我尝试了许多不同的 vo 和 dt,我从来没有一个填充列表,只有当我在没有 while 循环的情况下尝试它时才会发生这种情况(然后我在每个列表中有 1 个元素)。有什么建议么?

from numpy import pi
p = 0.036
def tiefe(V):
    a = (3*V*p**2)/pi
    z = a**(1/3)
    return z

U_unten = 35.56
A = 2                                                                       
def abfluss(V0, dt):
    
    V_geblieben = V0 - (U_unten*A*dt)/V0
    neu_tiefe = tiefe(V_geblieben)
    t_list = []
    Z_list = []
    while V_geblieben >=0:
        dt = dt+100
        t_list.append(dt)
        Z_list.append(neu_tiefe)
     
    return  t_list, Z_list
print(abfluss(50000,3600))

标签: python

解决方案


在循环内重新计算 V_geblieben 并且它可以工作

from math import pi

p = 0.036


def tiefe(V):
    a = (3 * V * p ** 2) / pi
    z = a ** (1 / 3)
    return z


U_unten = 35.56
A = 2


def abfluss(V0, dt):
    V_geblieben = V0 - (U_unten * A * dt) / V0
    neu_tiefe = tiefe(V_geblieben)
    t_list = []
    Z_list = []
    while V_geblieben >= 0:
        dt = dt + 100
        t_list.append(dt)
        Z_list.append(neu_tiefe)
        V_geblieben = V0 - (U_unten * A * dt) / V0
        print(V_geblieben)
    return t_list, Z_list


print(abfluss(50000, 3600))

推荐阅读