【问题标题】:Append is bring a syntax error back when called more than once in a programAppend 是在程序中多次调用时返回语法错误
【发布时间】: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


【解决方案1】:

我猜你可能想在几个地方使用*

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 = []
B_by_A = []

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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-03
    • 1970-01-01
    • 2017-01-04
    • 1970-01-01
    • 2020-11-21
    • 2016-11-12
    • 1970-01-01
    相关资源
    最近更新 更多