YouTube

Got a YouTube account?

New: enable viewer-created translations and captions on your YouTube channel!

Italian subtitles

← cs101_unit3_25_s_find-element

risposta - find-element

Get Embed Code
5 Languages

Showing Revision 2 created 08/01/2014 by Fran Ontanaya.

  1. Ci sono diversi modi per risolvere questo problema.
  2. Prima vediamo di risolverlo con 'while' .
  3. Definiamo la nostra 'find_element' .
  4. Usiamo 'p' come nome per la lista e 't' per il valore bersaglio,
  5. l'elemento di cui cerchiamo la corrispondenza.
  6. Definiamo il ciclo attraverso gli elementi di 'p' ,
  7. come per i cicli 'while' che abbiamo già visto.
  8. Abbiamo il nostro ciclo 'while' . Abbiamo introdotto la variabile 'i' .
  9. La usiamo come indice per vedere a che punto siamo del ciclo.
  10. La condizione che deve fermare il ciclo è quando 'i' raggiunge 'len(p)' .
  11. quindi il test del nostro ciclo è 'i
  12. Nel corpo del ciclo 'while' vogliamo vedere se l'elemento corrente è uguale a 't' ,
  13. quindi esaminiamo l'elemento corrente usando 'p[i]' e poi '==' per vedere se corrispondono.
  14. Se troviamo una corrispondenza, cioè se sono uguali,
  15. vogliamo ritornare l'indice dell'elemento trovato.
  16. Quindi il risultato dovrà essere il valroe di 'i' ,
  17. che è l'indice dell'elemento trovato.
  18. La parte rischiosa dell'usare 'while' invece di 'for'
  19. è che è molto facile dimenticare di incrementare la variabile che rappresenta l'indice.
  20. Se lasciassimo il ciclo così, girerebbe all'infinito
  21. poiché il valore di 'i' non cambierebbe mai a meno di trovare il valore che cerchiamo alla posizione uno,
  22. nel qual caso avremmo 0 come risultato.
  23. Il ciclo continuerebbe ad andare per sempre, sempre controllando il primo elemento.
  24. Incrementiamo quindi il valore di 'i' ,
  25. e qui finisce il corpo di 'while'.
  26. Il modo in cui abbiamo descritto 'find_element' dovrebbe funzionare,
  27. se non troviamo elementi deve ritornare -1.
  28. Se arriviamo al termine del ciclo senza interruzioni,
  29. significa che abbiamo controllato tutti i valori di 'i' fino a 'len(p) -1' .
  30. Non trovando elementi corrispondenti, ritorniamo -1.
  31. Questo è un modo per definire 'find_element'.
  32. Vi farò anche vedere come farlo con 'for'.
  33. Viene più naturale cominciare a pensare questa procedura usando 'while'
  34. poiché il valore che vogliamo ritornare
  35. è proprio l'indice.
  36. Usando 'for' per esaminare gli elementi
  37. non teniamo traccia dell'indice.
  38. Vediamo solo tutti gli elementi ordinati.
  39. Quindi abbiamo bisogno di qualcos'altro per tenere traccia dell'indice
  40. poiché è il valore che ci serve ritornare.
  41. Abbiamo bisogno anche qui di una variabile per l'indice.
  42. Usiamo 'i' come nel ciclo 'while'.
  43. Adesso però usiamo un ciclo 'for'.
  44. Non dobbiamo pensare alla condizione per fermare il ciclo
  45. poiché terminerà finiti gli elementi della lista.
  46. Come per 'while', controlliamo che l'elemento corrente sia uguale a 't' .
  47. Nel ciclo 'for' l'elemento corrente ha nome 'e' .
  48. Il nome viene assegnato ogni volta che eseguiamo il corpo del ciclo 'for'
  49. al valore dell'elemento corrente.
  50. Quindi il nostro test usa '==' per comparare 'e' e 't' .
  51. Se corrispondono, come per 'while', ritorneremo il risultato.
  52. Il risultato che vogliamo ritornare è l'indice dove abbiamo trovato la corrispondenza.
  53. Nel ciclo 'while' è tutto più chiaro.
  54. Aveva senso vedere l'elemento 'p' e l'indice 'i' .
  55. Nella versione con 'for' dobbiamo essere più attenti per trovare l'indice.
  56. Usiamo la variabile 'i' , quindi ritorniamo 'i'.
  57. 'i' comincia a '0'.
  58. Ogni volta che c'è un giro del ciclo dobbiamo incrementare 'i' .
  59. Teniamo così traccia dell'indice dell'elemento corrente.
  60. Come nella procedura precedente, con 'while',
  61. se arrivavamo alla fine senza trovare niente, significava che l'elemento corrispondente non c'era in 'p'
  62. e dovevamo ritornare -1.
  63. In questa procedura succede lo stesso.