正如标题所说,一个变量导致另一个变量为零而没有明显的原因。这是我的代码,短缺了大量的印刷语句,试图找出正在发生的事情。
for i in range(1, number_of_layers):
a_nt[i] = 0.5 * ((dia / 2) ** 2) * (theta_t[i] - sin(theta_t[i]))
print("ant 1 ", a_nt[i])
我为a_nt分配一个值,然后决定如何在if状态中使用该值将其分配给a_t。代码进入了else部分。
else:
print("ant 2 ", a_nt[i])
a_t[i] = a_nt[i]
print("at 1 ", a_t[i])
y_t[i] = y_nt[i]
print("at 2 ", a_t[i])
theta_c[i] = 0
print("at 3 ", a_t[i])
Python打印出来:
ant 1 0.005738905060148785
ant 2 0.005738905060148785
at 1 0.005738905060148785
at 2 0.005738905060148785
at 3 0
由于我无法确定的原因,在为theta_c赋值为零后a_t变为零。我对python来说比较新,但这让我疯了!
答案 0 :(得分:0)
如果您进行theta_c = a_t
之类的作业,那么您实际上并未复制数组,那么您只需使用其他变量引用相同的数组。
因此,当您更改theta_c
时,您也会更改a_t
。您可能应该采用浅色副本:
theta_c = list(a_t)
当然,根据情况,即使是浅层副本也可能不够,但在这种情况下,它可能会成功。