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

grullonet by AliceADSL grullonet a alice.it
Dom 1 Ott 2006 15:23:11 CEST


grullonet by AliceADSL ha scritto:
> 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
> _______________________________________________
> Python mailing list
> Python a lists.python.it
> http://lists.python.it/mailman/listinfo/python
> 
Forse cosė č pių corretto:

def what_decode(val):
    a = val
    z= 8
    c=[]
    while z != -1:

       if (a >= 2**z ):
          c.append(1)
          a = a - 2**z
       else:
          c.append(0)
       z=z-1
    return c[:]

print what_decode(300)

Christian


Maggiori informazioni sulla lista Python