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@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
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a