Forum >> Principianti >> Le posizioni dispari di una lista..

Pagina: 1

Salve,
stavo svolgendo un esercizio di python(premetto che sono ancora alle primissime armi), nel quale veniva richiesto di trovare quale siano gli elementi di posto dispari all'interno di una lista e stamparli, in seguito stampare anche la somma degli elementi dispari.
Avevo provato a dividire il cursore "i" diviso 2 e quindi stampare solo quelli che non avevano resto (escludendo anche lo 0).
def dispari(lista):
 for i in range(len(lista)):
     if (i/2)!= 1 and (i!=0):
         print(lista)

ma il risultato mi viene errato, in quanto mi esclude lo 0 e solo il primo numero pari:

lista1=[1,4,5,6,7,8,9,20]

>>> dispari(lista1)

4

6

7

8

9

20
Sapreste dirmi dove ho sbagliato?
ringrazio anticipatamente



--- Ultima modifica di elninos in data 2019-01-23 18:18:12 ---

--- Ultima modifica di elninos in data 2019-01-23 18:42:13 ---
Mah, quel codice non ha nessuno senso. Dovresti provare a descrivere prima in italiano, passo-passo, l'algoritmo che avevi in mente di implementare. Poi si vede come trasformarlo in codice.


Prima di tutto, però, dovresti chiarirti qual è il test da fare per determinare se un numero è pari. E non dico "in codice python", voglio proprio dire nell'algebra elementare: come si fa a dire se un numero è pari oppure dispari, in algebra? Te lo ricordi da scuola? "Un numero è pari se..."

(detto questo, non hai davvero bisogno di testare se le posizioni successive di una lista sono pari o dispari: se le percorri tutte in ordine, *lo sai già* che la prima è dispari e poi si alternano pari/dispari... prova a pensare anche in questo modo)

(detto questo, ovviamente le liste in python *ce l'hanno già* il modo di estrarre gli elementi pari, e/o quelli dispari, e/o i multipli di un numero qualsiasi... basta ricorrre alla "slice notation", quella con le parentesi quadre... ma forse appunto l'esercizio prevede che tu non ne faccia uso altrimenti è troppo banale).

basta leggere la guida di python, porta vari esempi su come sapere se un determinato numero sia pari o dispari.
Mah, quel codice non ha nessuno senso. Dovresti provare a descrivere prima in italiano, passo-passo, l'algoritmo che avevi in mente di implementare. Poi si vede come trasformarlo in codice.


Prima di tutto, però, dovresti chiarirti qual è il test da fare per determinare se un numero è pari. E non dico "in codice python", voglio proprio dire nell'algebra elementare: come si fa a dire se un numero è pari oppure dispari, in algebra? Te lo ricordi da scuola? "Un numero è pari se..."

(detto questo, non hai davvero bisogno di testare se le posizioni successive di una lista sono pari o dispari: se le percorri tutte in ordine, *lo sai già* che la prima è dispari e poi si alternano pari/dispari... prova a pensare anche in questo modo)

(detto questo, ovviamente le liste in python *ce l'hanno già* il modo di estrarre gli elementi pari, e/o quelli dispari, e/o i multipli di un numero qualsiasi... basta ricorrre alla "slice notation", quella con le parentesi quadre... ma forse appunto l'esercizio prevede che tu non ne faccia uso altrimenti è troppo banale).


La ringrazio per la risposta, avevo fatto un grosso errore di logica... Grazie al suo commento ne sono venuto a capo, ora però mi sorge un altro dubbio, le mi ha scritto che il primo elemento è dispari, quindi significa che lo 0 è la prima posizione dispari della lista?
def dispari(lista):
 for i in range(len(lista)):
     if i%2 == 0:
         print(i,lista)

quindi in una lista del tipo [0,1,2,3,4] la posizione dispari sarebbe 0,2,4?




--- Ultima modifica di elninos in data 2019-01-24 15:35:22 ---

--- Ultima modifica di elninos in data 2019-01-24 15:36:44 ---

--- Ultima modifica di elninos in data 2019-01-24 15:38:13 ---
Non farti confondere da python. Python numera le liste a partire da 0 (che è un numero *pari*, in effetti) per alcune ottime ragioni che però non hanno niente a che vedere con il tuo esercizio. Resta il fatto che il "primo" elemento di una lista è in posizione dispari, ovviamente, per tutti noi umani.


Quindi sì, hai il piccolo problema che l'elemento "0" (che è un numero *pari*) è un elemento *dispari* della lista... Il tuo ragionamento però è corretto, non ti resta che correggere l'offset indesiderato (aggiungi un "+1" nel punto strategico e tutto va a posto)



Pagina: 1



Esegui il login per scrivere una risposta.