我正在尝试定义一个计算两个粒子之间距离的函数,并打印出一个包含距离的表格。但是,当我使用该功能时,不会打印任何内容。我做错了什么?
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))
答案 0 :(得分: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))
答案 1 :(得分:0)
代码示例中的缩进似乎是关闭的:您定义了一个函数,但函数体没有缩进。您能确保粘贴代码中的缩进与您正在运行的内容相匹配吗?
这很重要,因为如果你的print
语句出现在函数中的return
语句之后,它将解释为什么没有打印任何内容。 (与其他一些语言不同,如果在return
语句后有无法访问的代码,Python就不会抱怨。)但是如果没有看到程序中的实际缩进,我们就无法说出来。
编辑:既然缩进已经修复,我可以确认return
语句确实会阻止其后的所有内容被执行。也许你想在退货声明之后贬低所有的行?