Cicli while 1: introduzione¶

Riferimenti: SoftPython - while 1

  • visualizza al meglio in
  • versione stampabile: clicca qua
  • per navigare nelle slide: premere Esc


Summer School Data Science 2023 - Modulo 1 informatica: Moodle

Docente: David Leoni david.leoni@unitn.it

Esercitatore: Luca Bosotti luca.bosotti@studenti.unitn.it

Iterare con while¶

In [2]:
i = 1

while i < 4:
    print('Ho contato fino a', i)
    i += 1
    
print('Ciclo finito !')
Ho contato fino a 1
Ho contato fino a 2
Ho contato fino a 3
Ciclo finito !

Blocco di codice eseguito ripetutamente fintantochè una condizione booleana è vera

Riferimenti: SoftPython - cicli while

while: Cosa serve?¶

In [3]:
i = 1

while i < 4:
    print('Ho contato fino a', i)
    i += 1
    
print('Ciclo finito !')
Ho contato fino a 1
Ho contato fino a 2
Ho contato fino a 3
Ciclo finito !
  1. inizializzare variabile di controllo
  1. usare la variabile di controllo nel while CONDIZIONE
  1. mutare variabile di controllo dentro il while

Quando usare while?¶

Tipicamente per

  • effettuare ricerche in una sequenza
  • aggiungere/togliere elementi dalla sequenza che si sta iterando
  • cicli infiniti

Altrimenti, è consigliabile il for

Riferimenti: SoftPython - while - Modificare sequenze

while: cercare con break (brutto)¶

In [4]:
 
Out[4]:
Python Tutor visualization

while: cercare meglio¶

In [5]:
 
Out[5]:
Python Tutor visualization

while: cerca e togli in sequenza¶

Pesca carte da mazzo (da destra) finchè trova cuori

Guarda esecuzione sul sito di Python Tutor

In [6]:
mazzo=['3 cuori','2 picche','9 cuori', '5 quadri','8 fiori']
carta=''
print("mazzo:", mazzo)
while len(mazzo) > 0 and 'cuori' not in carta:
    carta = mazzo.pop()      
    print("pescato", carta)
    print("mazzo:", mazzo)
print("Uscito dal ciclo!")
mazzo: ['3 cuori', '2 picche', '9 cuori', '5 quadri', '8 fiori']
pescato 8 fiori
mazzo: ['3 cuori', '2 picche', '9 cuori', '5 quadri']
pescato 5 quadri
mazzo: ['3 cuori', '2 picche', '9 cuori']
pescato 9 cuori
mazzo: ['3 cuori', '2 picche']
Uscito dal ciclo!

Iterazione - Performance¶

Python è un linguaggio intepretato -> lento..

Solo dove serve ottimizzare:

  • evitare cicli e usare librerie specializzate

    (vedi tutorial numpy, pandas, ..)

  • oppure compilare Python 'ristretto' in C (Cython, Mypyc, ...)
In [7]: