[Python] scusate.. mancava il soggetto al mail.. problema con variabile globale

grullonet by AliceADSL grullonet a alice.it
Dom 1 Ott 2006 15:14:06 CEST


Marco Amato ha scritto:
> Ciao , ricevo questo errore..
> dice :
> c (il valore che torna la funzione ) non è una variabile globale...
> ho provato a crearla fuori prima della funzione ma non cambia la
> situzione..
> 
> Errore :
> 
> File "prova.py", line 20, in ?
>   print what_decode(300)
> File "prova.py", line 11, in what_decode
>   c[8-z] = 1
> NameError: global name 'c' is not defined
> 
> 
> Code:
> 
> 
> def what_decode(val):
> 
>   a = val
>   z= 8
> 
>   while z != -1:
>       if (a >= 2**z ):
>           c[8-z] = 1
>           a = a - 2**z
>       else:
>           c[8-z] = 0
>   z=z-1
>   return c[:]
> 
> 
> 
> print what_decode(300)

Ho apportato le seguenti modifiche:
- Inizializzato la lista c con elementi 0
- Indentato z=z-1 per metterlo dentro il ciclo while
Questo il codice:

def what_decode(val):
    a = val
    z= 8
    c=[0,0,0,0,0,0,0,0,0]
    while z != -1:
       if (a >= 2**z ):
          c[8-z] = 1
          a = a - 2**z
       else:
          c[8-z] = 0
       z=z-1
    return c[:]

print what_decode(300)

E questo il risultato per il valore 300:
[1, 0, 0, 1, 0, 1, 1, 0, 0]

Mi sembra corretto: 2**8+2**5+2**3+2**2= 300

Ciao

Christian


Maggiori informazioni sulla lista Python