【发布时间】:2020-01-16 08:23:23
【问题描述】:
我正在尝试编写一个简单的函数。它是一个根据所提供的质子数的值呈现不同形式的函数。
质子数在名为“Z_min”的列表中提供。
我需要做的是计算函数并将值存储在数组中,以便稍后绘制值。
我在 Python 中有点生疏,但我尝试存储计算值的方法是使用 .append 将其添加到我的 Python 程序中的列表中,但是每当 .append 是在 for 循环中多次调用。但是,根据循环的构造方式,.append 只能在一次迭代中在循环体中调用一次。
你能帮我弄清楚为什么会这样吗?
import math as m
import matplotlib.pyplot as plt
import numpy as np
a_V = 15.75
a_S = 17.8
a_C = 0.711
a_A = 23.695
a_P = 11.2
Z_min = []
A = []
BA = []
for A_idx in range(0,301):
Z_min_val = (A_idx/2) * (1 +(a_C/(4*a_A))*A_idx**(2/3))**(-1)
A.append(A_idx)
Z_min.append(round(Z_min_val))
for i in Z_min:
if (A[i]%2 == 0):
if (Z_min[i]%2) == 0:
#print("This is even: ", Z_min[i])
if (A[i] == 0):
BA_val = 0
BA.append(BA_val)
else:
BA_val = (a_V*A[i] - a_S*(A[i])**(2/3) - a_C*(Z_min[i](Z_min[i]-1))/((A[i])**(1/3)) - a_A((A[i]-2*Z_min[i])**2)/(A[i]) + a_P*(A[i])**(-1/2))
BA.append(BA_val)
else:
#print("This is odd: ", Z_min[i])
BA_val = (a_V*A[i] - a_S*(A[i])**(2/3) - a_C*(Z_min[i](Z_min[i]-1))/((A[i])**(1/3)) - a_A((A[i]-2*Z_min[i])**2)/(A[i]) - a_P*(A[i])**(-1/2))
BA.append(BA_val)
else:
B_by_A_val = (a_V*A[i] - a_S*(A[i])**(2/3) - a_C*(Z_min[i](Z_min[i]-1))/((A[i])**(1/3)) - a_A((A[i]-2*Z_min[i])**2)/(A[i]))
B_by_A.append(B_by_A_val)
【问题讨论】:
-
发布完整的错误信息。
-
如果您遇到语法错误,请告诉我们错误。不要只是告诉我们。
-
我在尝试您的脚本时没有收到语法错误。我收到一个错误
'int' object is not callable -
因为这样的事情:
Z_min[i](Z_min[i]-1)。Z_min[i]是一个整数,为什么要以Z_min[i]-1作为参数来调用它? -
你在哪一行得到错误?
标签: python python-3.x list for-loop append