【问题标题】:Python 3.6: NameError: name 'A' is not definedPython 3.6:NameError:名称“A”未定义
【发布时间】:2018-09-17 10:22:41
【问题描述】:

我对 Python (3.6) 很陌生。我的控制台给了我以下错误:“NameError: name 'A' is not defined”。我该如何解决这个错误?

def NuclearBindingEnergy(A,Z):
  a_V=15.67
  a_S=17.23
  a_C=0.75
  a_A=93.2
  a_P=0

  if A%2==1:
    a_P=0
  else:
    if Z%2==0:
      a_P=12.0
    else:
      a_P=-12.0

  B = (a_V)*A - ((a_S)*(A**(2/3))) - (a_C)*(Z**2/(A**(1/3))) - ((a_A)*(((A-(2*Z))**2)/A)) + ((a_P)/A**(1/2))

  return B

def NuclearBindingEnergyPerNucleon(A,Z):
    return NuclearBindingEnergy(A,Z)/A

print(NuclearBindingEnergy(A,Z))
print(NuclearBindingEnergy(A,Z)/A)

【问题讨论】:

  • 底部打印语句中的 A 和 Z 是什么?
  • 您应该在最后两行定义 A 和 Z,因为您使用它们时没有在其函数之外定义它们。

标签: python-3.x


【解决方案1】:

您必须声明 A 和 Z 变量值,例如如下

A =12
Z = 5
print(NuclearBindingEnergy(A,Z))
print(NuclearBindingEnergy(A,Z)/A)

它会输出

55.008666416854204
4.584055534737851

【讨论】:

  • 我遗漏了一些代码并发现了它 - 感谢您的回复。
【解决方案2】:

当您在函数中使用参数时,您不需要定义它们,因为它们必须在使用函数时定义,但是当您使用某些函数并且想要将其中的一些值作为参数时,您必须在之前定义它们在函数参数中使用,因此在您的示例中,您只需定义 A 和 Z 即可:-

...
A = 20
Z = 30

print(NuclearBindingEnergy(A,Z))
print(NuclearBindingEnergy(A,Z)/A)
...

你也可以使用数字来代替它们:-

...
print(NuclearBindingEnergy(70, 60))
print(NuclearBindingEnergy(80,90)/100)
...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-26
    • 1970-01-01
    • 2020-09-04
    • 2021-10-18
    • 2016-08-09
    • 2016-01-08
    • 2021-07-22
    相关资源
    最近更新 更多