Un rinfrescante aggiornamento su Python's Loops

Spero che tu stia andando bene con la serie di refreshers smooth Python. Permettetemi di ricordarvi che lo scopo di questa serie è di insegnarvi in ​​modo fluido i concetti principali che dovete cogliere per andare avanti nel vostro viaggio di apprendimento in Python.

Ti ricordi quel giorno in cui dovevi innaffiare 10 fiori? O quando hai dovuto riempire 20 tazze di acqua? Stavi facendo lo stesso compito su ogni fiore o tazza d'acqua. Tale ripetizione è chiamata looping in programmazione. 

Per dare un'idea dell'importanza del loop, dì che stavi scrivendo un programma che dovrebbe stampare la stessa dichiarazione 100.000 volte. Osereste ripetere questa affermazione 100.000 volte, manualmente ?! Non lo farò, e penso che non lo farai anche tu. Sono sicuro che hai cose molto più importanti da fare. Ecco quindi che arriva la bellezza del looping.

Senza ulteriori indugi, vediamo il modo in cui Python va in loop.

Mentre Loop

In questo tipo di iterazione, finché il test sta valutando a vero, la dichiarazione o il blocco di dichiarazioni continuano a essere eseguiti. Quindi, il controllo continua looping torna all'inizio della dichiarazione (cioè test), e gestirà il controllo per la successiva dichiarazione (s) se il test valuta a falso. Se il test è sempre valido, in questo caso ciò che abbiamo è un ciclo infinito.

La sintassi generale per l'istruzione while è molto semplice e appare come segue:

while test: # loop test statements # loop body

Ricorda il termine ciclo infinito che ho menzionato qualche tempo fa? Cioè, il ciclo che non si ferma mai dal momento che il test è sempre vero? Vediamo un esempio di un tale ciclo:

mentre 1: print 'I \' m un ciclo infinito. Ctrl-C per fermarmi! '

Il valore 1 è un'altra forma del valore booleano vero. Quindi, se scrivi mentre vero, questo sarà equivalente all'istruzione while nell'esempio. Come noterai, continuerai a ricevere le istruzioni di stampa visualizzate all'infinito. 

Per terminare il ciclo, basta fare clic Control-C sulla tua tastiera. La figura seguente mostra come il programma stava funzionando all'infinito e veniva interrotto dalla tastiera (ad es. Control-C).

Ora abbeveriamo i nostri 10 bellissimi fiori con Python. Questo può essere fatto come segue:

fiori = 1 mentre i fiori <= 10: print 'Water the flower # ' + str(flowers) flowers = flowers + 1 

Il risultato del programma può essere mostrato nella seguente figura:

Prima di andare avanti, permettimi di chiarire alcuni punti nello script Python sopra. Forse ti starai chiedendo cosa str () è e perché l'abbiamo usato qui. Basato sulla documentazione:

Restituisce una stringa contenente una rappresentazione piacevolmente stampabile di un oggetto. Per le stringhe, restituisce la stringa stessa. La differenza con repr (oggetto) è questo str (oggetto) non tenta sempre di restituire una stringa accettabile eval (); il suo obiettivo è restituire una stringa stampabile. Se non viene fornito alcun argomento, restituisce la stringa vuota, ".

In altre parole, str () restituirà una rappresentazione di stringa stampabile dell'oggetto. Ma perché? Vediamo cosa si lamenterebbe Python se non lo usassimo str ():

Traceback (ultima chiamata più recente): File "test.py", riga 3, in  print 'Water the flower #' + flowers TypeError: impossibile concatenare oggetti 'str' e 'int'

Quindi, il problema è che a str non può essere concatenato con int

L'altro punto che voglio menzionare è l'uso di fiori = fiori + 1. Se non usassimo tale affermazione, avremmo un ciclo infinito in cui il valore dei fiori rimarrebbe 1, e quindi sempre meno di 10 (sempre vero).

Per Loop

Il for-loop è un'iterazione che attraversa gli elementi di un sequenza ordinata come liste, chiavi del dizionario, tuple, archi, ecc.

The Python for-loop la sintassi ha il seguente aspetto:

per var in sequenza: statement (s)

Dove var manterrà gli elementi della sequenza (cioè elenco, tupla) che il for-loop andrà a scorrere, in modo tale che il for-loop il corpo verrà eseguito per ogni oggetto nella sequenza.

Tempo per alcuni esempi sul for-loop!

languages ​​= ['Arabo', 'inglese', 'francese', 'spagnolo'] contatore = 0 per lingua nelle lingue: stampa 'Questa lingua è nella lista:' + lingue [contatore] contatore = contatore + 1

Cosa succede se inizializziamo contatore = 1? In questo caso, visualizzerai l'errore mostrato di seguito poiché a un certo punto del ciclo l'indice sarà fuori dall'elenco:

Traceback (ultima chiamata più recente): File "test.py", riga 4, in  print 'Questa lingua è nella lista:' + languages ​​[counter] IndexError: list index out of range

Un piccolo quiz Quale sarebbe l'output del seguente ciclo? (suggerimento: ricorda che Python inizia a contare da 0):

per x nel range (1,5): print x 

Dichiarazioni utilizzate nei cicli While e For

Le sottosezioni seguenti mostreranno alcune affermazioni che sono frequentemente utilizzate nei loop.

rompere

La dichiarazione rompere causa la fine del ciclo e l'esecuzione del programma viene proseguita nella successiva istruzione.

Un esempio di utilizzo rompere è mostrato sotto. Mostra come si chiude il programma (rompere) il ciclo quando il se-dichiarazione valuta a vero.

numeri = [1,2,3,4,5,6,7,8,9,10] valore = 1 mentre valore in numeri: se valore == 5: interruzione stampa 'I \' m # '+ str (valore ) value = value + 1 print 'Scusa, ho dovuto chiudere il ciclo quando il valore è diventato 5'

Continua

Questa istruzione restituisce il controllo all'inizio del ciclo, ignorando eventuali istruzioni nel ciclo che verranno in seguito. Vediamo il seguente esempio:

numeri = [1,2,3,4,5,6,7,8,9,10] valore = 1 mentre valore in numeri: se valore < 5: print 'I\'m # ' + str(value) value = value + 1 continue print 'I\'m in the if-condition, why are you ignoring me?!' elif value == 5: break print ('I have reached the last statement in the program and need to exit') 

Hai capito come Continua lavori? Cosa pensi che l'output di questo script Python sarebbe? Vai avanti, provalo.

passaggio

Questa affermazione è un po 'complicata. Il passaggio la dichiarazione è a nullo affermazione, cioè non fa nulla. Ma perché lo usiamo? Supponiamo che stavi scrivendo un programma, e ad un certo punto non eri sicuro di cosa avrebbe dovuto fare per-dichiarazione ad esempio, come segue:

numeri = [1,2,3,4,5,6,7,8,9,10] valore = 1 per il valore in numeri: # non so cosa fare qui ancora stampare ('Ho raggiunto l'ultima istruzione nel programma e bisogna uscire ') 

Se si tenta di eseguire il programma, si otterrà il seguente errore:

File "test.py", riga 6 print ('Ho raggiunto l'ultima istruzione nel programma e devo uscire') ^ IndentationError: atteso un blocco rientrato

Quindi Python si lamenta che dovrebbe esserci qualche affermazione all'interno del for-loop. Se si digita passaggio nel for-loop, l'output del programma sarà:

Ho raggiunto l'ultima istruzione del programma e devo uscire

Da questo, possiamo concludere quello passaggio funge da segnaposto per consentire al programma di funzionare anche se non hai ancora deciso quali istruzioni obbligatorie devono andare in qualche punto del codice.

altro

Il altro la dichiarazione è autoesplicativa e conterrà semplicemente un blocco di istruzioni da eseguire quando il ciclo esce in un modo normale, e non da un rompere. Un esempio del suo utilizzo è il seguente:

numeri = [1,2,3] valore = 1 mentre valore in numeri: stampa 'I \' m # '+ str (valore) valore = valore + 1 altro: stampa' I \ 'm parte del blocco di istruzioni else' print 'I \' m anche parte del blocco di istruzioni else ' 

Conclusione

Per concludere questo articolo e immaginare l'importanza del loop, ricordo quando ho dovuto eseguire quelle operazioni di analisi dell'immagine ogni pixel di un'immagine. 

Facendo questo su un'immagine con dimensioni 256x256 significa solo che dovevo ripetere le operazioni 65.536 volte (che è il numero di pixel)! In loop per il salvataggio!