Forum
>>
Principianti
>>
Global Name non definito
Pagina: 1
Esegui il login per scrivere una risposta.
Pagina: 1
Scritto da h |
2015-07-06 23:35:59 - Global Name non definito
|
Salve a tutti...
premetto mi sono da poco affacciato a python, volevo realizzare un modulo "generatore di funzioni", quindi inizio con una classica sinusoide: def sinwave(N, fc, freq): # genera funzione seno result = [ ] for x in range(N): result.append(32000*sin(2*pi*freq*x/fc)) return result l'errore che mi restituisce: Traceback (most recent call last): File "<stdin>", line 1, in <module> File "genwave.py", line 12, in squarewave for x in range(N): NameError: global name 'sin' is not defined Consigli?? |
|
Scritto da Daniele aka Palmux |
2015-07-07 08:35:45 - Re: Global Name non definito
|
Ciao h (ma sei uno degli agenti dei Man in Black?), l'errore è molto chiaro se leggi con attenzione.
Python non sa cosa sia quel sin (e neanche il pi dopo) che provi ad inserire nella lista, visto che non lo espliciti prima: result.append(32000*sin(2*pi*freq*x/fc))Se ti riferisci a sin (ed anche pi) del modulo math, devi importarlo nel tuo codice con un: import mathoppure: from math import sin from math import pi Ciao. Daniele |
|
Scritto da h |
2015-07-07 11:58:56 - Re: Global Name non definito
|
Caio Daniele...
ho aggiunto import math in questo modo: # modulo generatore di funzioni from math import * def sinwave(N, fc, freq): # genera funzione seno result = [] for x in range(N): result.append(32000*cos(2*pi*freq*x/fc-pi/2)) return result def squarewave(N,fc,freq,dc): # genera funzione quadra result=[] for x in range(N): if x<N/2 : result.append(32000) if x>=N/2: result.append(0) return result (ho aggiunto anche una squarewave non corretta, era solo per fare una prova) risulta corretta la prima ma non la seconda con un errore simile: Traceback (most recent call last): File "<stdin>", line 1, in <module> File "genwave.py", line 16, in squarewave result.append(0) NameError: name 'result' is not defined perchè? |
|
Scritto da Daniele aka Palmux |
2015-07-07 15:43:49 - Re: Global Name non definito
|
Tralasciando alcuni errori sintattici e/o logici, se in Python non mostri l'indentazione, parte integrante della sintassi, non se ne viene a capo del tuo script e dei relativi errori.
Assomiglia al codice sotto, che ti ho messo anche su Pastebin per comodità? from math import * def sinwave(N, fc, freq): # genera funzione seno result = [] for x in range(N): result.append(32000*cos(2*pi*freq*x/fc-pi/2)) return result def squarewave(N,fc,freq,dc): # genera funzione quadra result = [] for x in range(N): if x<N/2 : result.append(32000) if x>=N/2: result.append(0) return result |
|
Scritto da h |
2015-07-07 16:29:38 - Re: Global Name non definito
|
Ciao Daniele, innanzitutto grazie.
Il codice è identico... l'indentazione sparisce quando passo dalla bozza all'anteprima, aggiungendo tra l'altro, non so perché, un certo numero di spazi. |
|
Scritto da Daniele aka Palmux |
2015-07-07 18:12:58 - Re: Global Name non definito
|
Prima della tavolozza dei colori, hai un pulsante code (quello con i segni <> sopra un foglio bianco), che ti permette di mantenere gli spazi e quindi l'indentazione.
Ciao. Daniele |
Pagina: 1
Esegui il login per scrivere una risposta.