我正在使用“使用Python做数学”一书中的示例Python脚本,并且我继续遇到一个NameError,它告诉我我的变量没有定义,何时,它看起来像我定义的那样。 / p>
我使用的是Python 3.4,代码是
'''
Gravitational Calculations
'''
import matplotlib.pyplot as plt
#Draw the graph
def draw_graph(x,y):
plt.plot(x,y,marker='o')
plt.xlabel('Distance (m)')
plt.ylabel('Force (N)')
plt.title("Gravitational force as a function of distance")
def generate_F_r():
#Generate values for r
r=range(100,1001,50)
#Empty list to store F values
F=[]
#G Constant
G=6.674*(10**-11)
#Two masses
m1=0.5
m2=1.5
#Calculate F and append it into the F-list
for dist in r:
force=G*m1*m2/(dist**2)
F.append(force)
#Call the Draw Plot Function
draw_graph(r,F)
if __name__=='__main__':
generate_F_r()
它给我的错误是: NameError名称'r'未定义
是否在r = range(100,1001,50)的行中定义了?
为什么不将此作为定义?
我确信我正在做一些非常简单和令人难以置信的愚蠢事情,但我最终知道这么简单的事情会如此困难。
谢谢!
答案 0 :(得分:0)
函数中的代码在调用函数之前不会执行。在您尝试引用generate_Fr()
之后,才能致电r
。即使你 首先调用该函数,r
仍然只是一个局部变量。您需要在函数开头使用global r
将其设为全局。