Forum >> Principianti >> Problema con codice

Pagina: 1

Salve ragazzi. Ho scritto un codice in cui vi è presente una funzione ed un main. La funzione deve consegnare i numeri pari dell'argomento (che è una lista) ad un'altra lista. La funzione restituisce una lista (che può essere anche vuota) al main. Ecco il codice:



def even_num (a):
    count=0
    new=[ ]
    for c in a:
       if c%2==0:
           new[count]=c
           count=count+1
 return new

a=[1,2,3,4]
z=even_num(a)
print(z)







Python mi dà un errore nella funzione della riga in cui assegno c alla lista new. Mi potete dare un aiuto?


--- Ultima modifica di ㎝ in data 2018-02-15 18:09:51 ---
*newcount
Scusate, è la prima volta che uso il forum. Il codice è scritto nell'allegato txt. Vi ringrazio per un eventuale aiuto.
Allegati
Scusate, un'altra cosa e non vi rompo piu' le scatole. Premetto che uso Python 3.4.3. Mi capita che quando uso la funzione range(x,y), python non mi restituisce una lista se ad esempio scrivo:



x=range(0,5)

print (x)




Python mi stampa




range(0,5)




È per via della mia versione di Python? non ci sto capendo nulla....
Ciao provo a risponderti.

Riguardo al primo problema potresti usare una list comprension:

a = [1,2,3,4]
b = [c for c in a if c % 2 == 0]
In python 3 range() non ritorna una lista ma un generatore, ovvero non ritiene tutti i valori in memoria ma li rilascia solo su richiesta...


Ciao provo a risponderti.

Riguardo al primo problema potresti usare una list comprension:

a = [1,2,3,4]
b = [c for c in a if c % 2 == 0]
In python 3 range() non ritorna una lista ma un generatore, ovvero non ritiene tutti i valori in memoria ma li rilascia solo su richiesta...
anche list(range(5)) si comporta come ti aspetteresti, se stai seguendo un libro dedicato a python 2.
THE 🍺-WARE LICENSE (Revision ㊷):
<carlo@🐍.it> wrote this post. As long as you retain this notice you
can do whatever you want with this stuff. If we meet some day, and you
think this stuff is worth it, you can buy me a 🍺 in return. -- ㎝
Ti ringrazio per la risposta. Ma devo lavorare nel modo specificato all'inizio della discussione dato che è un esercizio. Ma se dico che una lista è vuota, ovvero:



a=[ ]




posso riempirla nel seguente modo, ovvero:







c=0

while (c<5):

ac=int(input())

c=c+1




Perchè il problema sembra che sorge nel momento in cui non inizializzo la lista e quando assegno un valore ad un determinato indice.
Potresti provare in questo modo..

def even_num (a):
   count = 0
   new = []
   for c in a:
      if c % 2 == 0:
         new.append(None)
         newcount = c
         count = count+1
   return new

Ok. Ringrazio tutti per l'aiuto. Buon proseguimento di cose.


Pagina: 1



Esegui il login per scrivere una risposta.