Domanda Ciclo FOR e liste

Stato
Discussione chiusa ad ulteriori risposte.

Hemek

Utente Silver
9 Novembre 2014
57
14
9
61
Buonasera,
Questa sera sono qui nuovamente e chiedervi aiuto su due elementi credo principali per la programmazione in qualunque linguaggio: il ciclo FOR e gli array(liste in Python)

Sto studiando un po le liste in Python ma sbadatamente mi sono dimenticato di studiare il ciclo for.
Adesso sto cercando un po di capirlo e di come applicarlo alle liste, ma purtroppo sembra un po più complicato(almeno a primo impatto) rispetto al for del linguaggio C.

Pur consultando diverse guide su internet non riesco proprio a capirlo,e tanto meno applicarlo alle liste.
Qualcuno con tanta buona volontà è disposto a spiegarmelo bene in modo che io riesca a capire?

Ringrazio anticipatamente.
 
Codice:
for i in [1,2,3,4,5]:
    print i

Dove sta' la difficolta'?
 
Ultima modifica:
Prendiamo in esame per esempio un ciclo for in C:

Codice:
[FONT=Open sans]for(i=0; i<10; i++)[/FONT]

Io in questo caso so che il loop farà 10 giri, e so che l'indice i prenderà il valore di 0,1,2,3,4,5,6,7,8,9
Il ragionamento che si usa in Python non mi è molto chiaro invece, non so esattamente come spiegarmi
 
Codice:
for i in[0,1,2,3,4,5,6,7,8,9]:
     print i

oppure, per essere piu' efficienti:'
Codice:
for i in xrange(10):
    print i
 
Ultima modifica:
Praticamente l'indice assume i valori della lista?

E inoltre, come faccio ad acquisire un valore di una lista da tastiera? Ovvero come faccio a fare questo in Python?

Codice:
for(i=0; i<10; i++)  {
           temperatura[i];
           printf("\nDigita la temperatura [%d]\t", i+1);
           scanf("%f", &temperatura[i]);
  }
 
Praticamente l'indice assume i valori della lista?

E inoltre, come faccio ad acquisire un valore di una lista da tastiera? Ovvero come faccio a fare questo in Python?

Codice:
for(i=0; i<10; i++)  {
           temperatura[i];
           printf("\nDigita la temperatura [%d]\t", i+1);
           scanf("%f", &temperatura[i]);
  }

Dimentica il C quando programmi in Python, perché, secondo me, sono due cose completamente diverse.
Il for in Python diciamo che non funziona come tu ti aspetti, esso permette di "iterare" sugli oggetti:

Codice:
for elemento in xrange(10):
    print(elemento)

Il frammento di codice sopra non fa altro che prendere, uno alla volta, i valori di una lista e stamparli a video.

Per realizzare quella cosa che hai chiesto potresti fare:

Codice:
temperatura = [1,2,3,4,5,6,7,8,9,10]
for elemento in temperatura:
    tmp = int(input("Digita la temperatura: "))
    temperatura[elemento] = tmp
 
Ultima modifica:
Ho provato questo metodo, sembra funzionare ma non so perché in alcuni casi con alcuni numeri da questo errore: (Numeri messi più volte consecutivamente o numeri come 20,30)

IndexError: list assignment index out of range

Il resto del codice è:

Codice:
print("Calcolo media di 10 temperature")
j=0
somma=0
temperatura = [1,2,3,4,5,6,7,8,9,10]
for elemento in temperatura:
    tmp = int(input("Digita la temperatura: "))
    temperatura[elemento] = tmp
while(j<10):
    somma=somma+temperatura[j]
    j=j+1
    break
media=somma/10
print("\nLa media delle temperature e': ", media)


P.S: Sono una capra
 
Ho provato questo metodo, sembra funzionare ma non so perché in alcuni casi con alcuni numeri da questo errore: (Numeri messi più volte consecutivamente o numeri come 20,30)

IndexError: list assignment index out of range

Il resto del codice è:

Codice:
print("Calcolo media di 10 temperature")
j=0
somma=0
temperatura = [1,2,3,4,5,6,7,8,9,10]
for elemento in temperatura:
    tmp = int(input("Digita la temperatura: "))
    temperatura[elemento] = tmp
while(j<10):
    somma=somma+temperatura[j]
    j=j+1
    break
media=somma/10
print("\nLa media delle temperature e': ", media)


P.S: Sono una capra

Stai facendo confusione fra il valore della temperatura e l'indice del ciclo.

Questo è un modo corretto per fare la media di 10 temperature:
Codice:
print("Calcolo media di 10 temperature")
media=0
somma=0
for i in range(10):
    somma += int(input("Digita la temperatura: "))

media = somma / 10
print("\nLa media delle temperature e': ", media)
 
Ultima modifica:
Ho capito, praticamente aggiungi alla variabile somma il valore non appena viene inserito dall'utente, però se io devo fare una specie di confronto con un ciclo for, ad esempio:

"Digita 3 numeri e visualizza il maggiore"

Codice:
massimo=0
j=3
numeri=[1,2,3]
for i in numeri:
    numeri2=int(input("Digita il numero: "))
    numeri[i]=numeri2


massimo=numeri[0]
while(j>0):
    --j
    if(massimo<numeri):
        massimo=numeri[j]


print("Il numero massimo e':", massimo)

Come faccio? Mi da come errore :

Codice:
  numeri[i]=numeri2
IndexError: list assignment index out of range

- - - Updated - - -

Sono riuscito a risolvere l'errore, però ora non mi visualizza il risultato dell'operazione, inserisco i 3 valori e non accade nulla:

Codice:
massimo=0
j=0
numeri = [0,1,2]
for i in numeri:
    numeri2=int(input("Digita il numero: "))
    numeri[i] = numeri2


massimo=numeri[0]
while(j!=3):
    ++j
    if(massimo<numeri[j]):
        massimo=numeri[j]


print("Il numero massimo e':", massimo)
 
Stato
Discussione chiusa ad ulteriori risposte.