2016-04-03 18 views
1

我想寫一個代碼來分割兩個二進制形式的多項式(分別是newdata和proofin)。當我運行的代碼,但是,我得到:NameError:name'freshdatapoly'未定義 - 先前定義的變量?

NameError: name 'freshdatapoly' is not defined

這混淆了我,因爲我認爲我做了定義,甚至附加的東西給它(這似乎給沒有錯誤)。我懷疑同樣的事情可能會在'proofpoly'之後發生。下面是代碼:

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

回答

1

freshdatapolytransformation_for_numpy_of_o()功能本地變量。它只存在於該功能中。

返回,從使用return函數值,然後將其分配到一個新的地方在total()

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 

total()

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

你需要爲proofpoly做到這一點也用於transformation_for_numpy_of_proof();這是中的局部變量的功能,除非您返回,否則total()不可用。