我是编码的新手,我在计算物理课上得到了这个任务:class assignment
这是我为它制作的代码:
A = int(input("please enter the atomic mass"))
Z = int(input("please enter the atomic number"))
def semi_empirical_mass_formula(A,Z):
a1 = 15.8
a2 = 18.3
a3 = 0.714
a4 = 23.2
afive = [-12.0,12.0,0.0]
if A%2 == 0 and Z%2 != 0:
a5=afive[0]
if A%2 and Z%2 == 0:
a5=afive[1]
if A%2 != 0:
a5=afive[2]
return (a1*A-a2*A**(2/3))-((a3*Z**2)/A**(1/3))-((a4*(A-2*Z)**2)/A)+((-12.0)/A**(1/2))
print (semi_empirical_mass_formula(A,Z))
正如您可能看到的,它不起作用,我不知道为什么它给我的答案是324.724。答案应该是~500
我对学习很感兴趣,我的教授鼓励我们向像这样的编码员社区提问。请包括如何解决它的说明。最后一部分将使我受益匪浅,因为我对编码非常缺乏经验。
编辑:我也使用“//”作为分区,当我这样做时它给出的答案是326.1答案 0 :(得分:0)
您可能在 4.5 年后仍然不需要这个,但是对于目前遇到此问题并正在寻求帮助的任何其他人,这是我为回答练习 2.10 a 所做的工作。物理学家的 Python 编程(有时也称为计算物理学),作者为 Mark Newman。
A = float(input("Please enter the atomic mass number "))
Z = float(input("Please enter the atomic number "))
a1 = 15.8
a2 = 18.3
a3 = .714
a4 = 23.2
if A % 2 == 1:
a5 = 0
elif A % 2 == 0 and Z % 2 == 0 :
a5 = 12.0
else:
a5 = -12.0
B = a1*A - a2*(A**(2/3)) - a3*(Z**2)/(A**(1/3)) - a4*((A-2*Z)**2)/A + a5/(A**(1/2))
print("The nuclear binding energy is: ", round(B, 2))