2016-04-03 12 views
1

Ich versuche, einen Code zu schreiben, um zwei Polynome zu teilen, die in binärer Form gegeben werden (newdata und proofin). Wenn ich den Code ausführen, aber ich bekomme:NameError: Name 'freshdatapoly' ist nicht definiert - Variable vorher definiert?

NameError: name 'freshdatapoly' is not defined

Das verwirrt mich, wie ich glaube, ich definieren tat, und sogar Dinge angehängt (die keine Fehler zu geben scheint). Ich vermute, dass das gleiche später auch mit 'proofpoly' passieren kann. Hier ist der Code:

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

Antwort

1

freshdatapoly ist ein lokales Variable in der transformation_for_numpy_of_o() Funktion. Es existiert nur innerhalb dieser Funktion.

zurück, die von der Funktion Wert return verwenden, weisen sie dann zu einem neuen lokalen in 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 

und in total():

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

Sie werden diese für proofpoly tun müssen in transformation_for_numpy_of_proof() auch verwendet; Das ist eine lokale Variable in , die Funktion und nicht eine total() Funktion zur Verfügung, es sei denn Sie zurückgeben.

Verwandte Themen