2016-03-29 12 views
0

"Python ile Matematik Yapmak" adlı kitaptan örnek bir Python komut dosyası üzerinde çalışıyorum ve değişkeni tanımlanmayan bir NameError'a karşı koşmaya devam ediyorum. tanımlanmış.Python Komut Dosyası'nda NameError

Python 3.4 kullanıyorum ve kod bana verir hatadır

''' 
    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() 

geçerli: NameError adı 'r'

tanımlanmamış mi değil doğrultusunda tanımlanmış olduğu r = aralık (100.11001,50)?

Neden bunu bir tanım olarak kabul etmiyorsunuz?

Eminim ki, göze çarpan basit ve inanılmaz derecede aptalca bir şey var, ama ben aklımda böyle basit bir şeyin nasıl bu kadar zor olabileceğini düşünüyorum.

Teşekkürler!

+0

= define generate_F_r(): 'içinde hangi kodlar olmalıdır. Çünkü olduğu gibi, hata geçerlidir. 'r' yalnızca" generate_F_r "yönteminde bulunur. Kodunuzun şu anda nasıl yapılandırıldığından, onu yöntem dışında kullanmaya çalışıyorsunuz. – idjaw

+0

Ayrıca, girintiniz yanlış veya generate_F_r() çağrılmadan önce r kullanılır – Natecat

cevap

0

İşlevdeki kod, işlev çağrılana kadar yürütülür. Daha önce r referans vermeye çalışana kadar generate_Fr() numaralı telefonu aramazsınız. ,'u ilk defa çağırsa bile, r hala yerel bir değişkendir. İşlevin başında global r ile global yapmalısınız.

İlgili konular