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.
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 conrepr (oggetto)
è questostr (oggetto)
non tenta sempre di restituire una stringa accettabileeval ()
; 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, inprint '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).
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, inprint '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
Le sottosezioni seguenti mostreranno alcune affermazioni che sono frequentemente utilizzate nei loop.
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'
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.
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.
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 '
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!