我在UNIX上使用Python。
我有这个代码,它应该采用单个输入Z并通过A的值从A = Z到A = 3Z,并找到每个核子的最大结合能(结合能/ A)。代码如下:
Z = int(input('An atomic Number '))
B_max = 0
A_max = 0
for A in xrange(Z,3*Z+1):
B1 = calc_binding_energy(A,Z) #calculates the binding energy
#for all the values of A
B2 = float(B1/A) #finds the energy per nucleon
if B2 > B_max:
B_max = B1/A #Then if it is the max it goes back to that
#calculation for the energy per nucleon
A_max = A #Goes back to find A for the greatest energy
print(A_max)
print (B_max)
但它一直给我这个错误:
unsupported operand type(s) for /: 'NoneType' and 'int'
当我将Z输入更改为浮点数时,它给了我这个错误:
float() argument must be a string or a number
我做错了什么?
答案 0 :(得分:1)
B1
是NoneType
。 calc_binding_energy
可能不会返回像您预期的数字。您需要粘贴/检查calc_binding_energy