如果值不存在,如何退出for循环?

2024-10-03 09:10:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了一个函数,它使用4个值计算距离:lat1、lon1、lat2和lat2

def greatcirclem(lat1,lon1,lat2,lon2):                           
    lat1,lon1,lat2,lon2=map(np.deg2rad,[lat1,lon1,lat2,lon2])
    dlon=lon2-lon1 
    sint1=np.sin(lat1)
    sint2=np.sin(lat2)
    cost1=np.cos(lat1)
    cost2=np.cos(lat2)
    codln=np.cos(dlon)
    aaa=np.arccos(sint1*sint2+cost1*cost2*codln)
    ccc=np.rad2deg(aaa)
    km_greatcircle=ccc*1.852*60
    m_greatcircle=km_greatcircle*100
    return m_greatcircle

当我在for循环中应用此函数时,当lat2、lon2不存在时会发生错误

我的意思是,因为我只是在我的函数中从n行和n+1行中选择值,n+1行将超出零件末尾的范围

当值不存在时,如何退出for循环

我还将附加for循环代码

for row in range(min(data3.index),max(data3.index)):
    data3.loc[row+1,'diff_m'] = greatcirclem(data3.loc[row,'lat'], data3.loc[row,'lon'], data3.loc[row+1,'lat'], data3.loc[row+1,'lon'])

Tags: 函数fornpcoslocrowdata3dlon
1条回答
网友
1楼 · 发布于 2024-10-03 09:10:37

或许有两种解决方案:

1)是否使用默认值编写函数

def greatcirclem(lat1=0,lon1=0,lat2=0,lon2=0):

2)在for循环中加入一个条件(尽管更昂贵):

      if lat2 and lon2:
          data3.loc[row+1,'diff_m'] = etc.
      else:
          continue #i.e. move on to the next data set OR insert arbitarty value

听起来您正在处理一个数据文件,其中可能缺少一些条目?因此,您可以在某些值中进行篡改,或者在一个远远超出范围的值中进行粘贴,使其表现为错误信号,或者您可以抛出一个异常。。。i、 e.由于数据错误而停止程序执行。一切取决于手头的情况

相关问题 更多 >