2016-04-03 16 views
1

İki biçimde verilen ikili polinomları bölmek için bir kod yazmaya çalışıyorum (sırasıyla newdata ve prova). Ben kodu çalıştırdığınızda, ancak, olsun: Bu beni karıştırırNameError: 'freshdatapoly' ismi tanımlanmadı - Değişken önceden tanımlanmış mı?

NameError: name 'freshdatapoly' is not defined

, ben tanımlamak yaptım ve hatta (hiçbir hata vermek gibi görünüyor) buna şeyler eklenmiş düşünüyorum. Aynı şeyin 'prova poliçesi' ile de olabileceğinden şüpheleniyorum.

import numpy as np 

def transformation_for_numpy_of_o(): 
    newdata = ("101001") 
    freshdata = list(newdata) 
    freshdatapoly = [] 

    for n in freshdata: 

     if n == 1: 
      freshdatapoly.append(1.0) 

     if n == 0: 
      freshdatapoly.append(0.0) 



def transformation_for_numpy_of_proof(): 
    proofin = ("101001") 
    proofing = list(proofin) 
    proofpoly = [] 

    for n in proofing: 

     if n == 1: 
      proofpoly.append(1.0) 

     if n == 0: 
      proofpoly.append(0.0) 



def total(): 

    # Based on http://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.polydiv.html 

    transformation_for_numpy_of_o() 
    transformation_for_numpy_of_proof() 
    numer = np.array(freshdatapoly) 
    denomin = np.array(proofpoly) 
    answer = np.polydiv(numer, denomin) 
    print (answer) 

total() 

cevap

1

freshdatapolytransformation_for_numpy_of_o() işlevinde yerel değişkendir: İşte kodudur. Sadece bu işlev içinde var. return kullanarak işlevinden değer

Dönüş ardından total() yeni bir yerel atamak:

def transformation_for_numpy_of_o(): 
    newdata = ("101001") 
    freshdata = list(newdata) 
    freshdatapoly = [] 

    for n in freshdata: 

     if n == 1: 
      freshdatapoly.append(1.0) 

     if n == 0: 
      freshdatapoly.append(0.0) 

    return freshdatapoly 

ve total() yılında:

o_transformed = transformation_for_numpy_of_o() 
# ... 
numer = np.array(o_transformed) 

Sen proofpoly için bunu yapmak gerekir transformation_for_numpy_of_proof() da kullanılmış; Bu, numaralı yerel bir değişkenin işlevine sahip olduğunu ve total() ürününü iade etmediğiniz sürece kullanılamaz.

İlgili konular