函数中的打印语句不起作用
我正在尝试定义一个函数,这个函数可以计算两个粒子之间的距离,并打印出一个包含这些距离的表格。但是,当我使用这个函数时,什么都没有打印出来。我到底哪里出错了呢?
au = 1.49598e11 #astronomical unit in meters
rx = au * np.asarray([.5,.8,.2]) #x-comp separation vector
ry = au * np.asarray([2.6,9.1,3.7]) #y-comp separation vector
rz = au * np.asarray([.05,.1,.25]) #z-comp separation vector
def svec(x,y,z):
'''computes the magnitude and vector components of the distance between two particles.'''
#for loop to compute vector components of separation between two particles
rvec = []
for i in range(3):
if i < 2:
vx = x[i]-x[i+1]
vy = y[i]-y[i+1]
vz = z[i]-z[i+1]
rvec.append([vx,vy,vz])
if i == 2:
vx = x[0]-x[-1]
vy = y[0]-y[-1]
vz = z[0]-z[-1]
rvec.append([vx,vy,vz])
return rvec
comp1 = ['x-comp[m]','y-comp[m]','z-comp[m]']
r0 = rvec[0].insert(0,'particle 0->1')
r1 = rvec[1].insert(0,'particle 1->2')
r2 = rvec[2].insert(0,'particle 0->2')
print(tabulate(rvec,headers=comp1))
2 个回答
0
你代码里的缩进看起来有点问题:你定义了一个函数,但是函数的内容没有缩进。能不能确认一下你粘贴的代码缩进和你运行的代码是一致的?
这很重要,因为如果你的 print
语句在函数的 return
语句之后,那么就能解释为什么什么都没有打印出来。(和其他一些语言不同,Python 不会对 return
语句后面的不可达代码发出警告。)不过,如果我们看不到你程序里的实际缩进,就无法判断了。
补充:现在缩进问题已经解决,我可以确认 return
语句确实会阻止它后面的所有代码执行。也许你是想把 return
语句后面的所有行缩进减少呢?
1
Python对空格和缩进很敏感,但文档字符串可能会让你在缩进错误时看不到正确的错误提示。
你的代码应该像这样缩进:
au = 1.49598e11 #astronomical unit in meters
rx = au * np.asarray([.5,.8,.2]) #x-comp separation vector
ry = au * np.asarray([2.6,9.1,3.7]) #y-comp separation vector
rz = au * np.asarray([.05,.1,.25]) #z-comp separation vector
def svec(x,y,z):
'''computes the magnitude and vector components of the distance between two particles.'''
#for loop to compute vector components of separation between two particles
rvec = []
for i in range(3):
if i < 2:
vx = x[i]-x[i+1]
vy = y[i]-y[i+1]
vz = z[i]-z[i+1]
rvec.append([vx,vy,vz])
if i == 2:
vx = x[0]-x[-1]
vy = y[0]-y[-1]
vz = z[0]-z[-1]
rvec.append([vx,vy,vz])
return rvec
comp1 = ['x-comp[m]','y-comp[m]','z-comp[m]']
r0 = rvec[0].insert(0,'particle 0->1')
r1 = rvec[1].insert(0,'particle 1->2')
r2 = rvec[2].insert(0,'particle 0->2')
print(tabulate(rvec,headers=comp1))