Python: 3 - Aggiungere struttura al codice

Strutture di controllo 

Piuttosto che passare semplicemente attraverso un programma ed eseguire ogni riga di codice quando si incontra, probabilmente si desidera un maggiore controllo. Queste strutture di controllo consentono di eseguire codice solo quando esiste una condizione specifica e di eseguire blocchi di codice più volte. Nella maggior parte dei casi, sarà più facile guidarti attraverso questi concetti che cercare di descriverli. 

Istruzione if 

L'istruzione if consente di verificare una condizione prima di eseguire un blocco di codice. La condizione può essere qualsiasi valore o equazione che restituisce true o false. 
Il prossimo pezzo di codice scorre l'elenco dei robot e determina se il robot è Uno. 

>>> for robot in robots: 
            if robot == "Uno": 
                print ("Questo è Uno") 
            else: 
                print (robot + "non è Uno") 
Questo è Uno 
Due non è Uno 
Tre non è Uno 

Ancora una volta, nota il rientro durante la digitazione. IDLE fa rientrare un altro livello dopo ogni riga che termina con due punti, che dovrebbe essere ogni riga che denota un nuovo blocco, come istruzioni di ciclo e condizionali. 
È importante anche notare come testiamo l'uguaglianza
Un singolo segno di uguale significa assegnazione
I segni di doppio uguale dicono all'interprete di confrontare per l'uguaglianza

>>> myRobot = "Uno"
>>> myRobot == "Due"
False 
>>> myRobot == "Uno"
True 

Ecco un elenco di comparatori
è uguale a             == 
non uguale             != 
Minore di              <
Maggiore di           
Minore o uguale a      <= 
Maggiore o uguale a    > = 

È inoltre possibile utilizzare and e or per verificare più condizioni. 

>>> for robot in robots: 
           if robot == "Due" or robot == "Tre": 
               print("Questi non sono i droidi che sto cercando.") 
Questi non sono i droidi che sto cercando. 
Questi non sono i droidi che sto cercando. 

I confronti vengono spesso utilizzati anche per determinare se un oggetto esiste o contiene un valore. In sostanza, una condizione restituisce true se non restituisce false, 0 o nessuno. Ciò è molto utile quando si desidera eseguire una porzione di codice solo se esiste un oggetto, ad esempio quando si inizializzano sensori o connessioni tramite una porta seriale o una rete.

I Cicli 

Quando lavori con la robotica, ci sono volte in cui vuoi ripetere un blocco di codice. Se eseguire una serie di istruzioni su una raccolta di oggetti o eseguire un blocco di codice per tutto il tempo in cui esiste una condizione, è necessario utilizzare un ciclo. I cicli consentono di ripetere un blocco di codice per eseguire le attività più volte. Esistono due tipi di loop: il ciclo for e il ciclo while. Ciascuno fornisce una funzionalità specifica che è cruciale per scrivere programmi efficienti. 

Ciclo for

Un ciclo for esegue un blocco di codice per ogni elemento in un elenco. 
Una raccolta di valori, una tupla, un elenco o un dizionario, viene fornito al ciclo for. Quindi itera nell'elenco ed esegue il codice contenuto nel blocco di codice. Quando esaurisce gli elementi nella raccolta, il ciclo viene chiuso e viene eseguita la riga di codice successiva all'esterno del blocco for. 
Come con l'istruzione if, inserisci il codice che vuoi eseguire come parte del ciclo in un blocco indicato dal rientro. 
È importante assicurarsi di aver corretto il rientro, altrimenti verrà visualizzato un errore. Quando lo inserisci nella shell Python, fai attenzione a cosa fa con il rientro. Dopo aver inserito il comando di stampa e premuto Invio, è necessario premere nuovamente Invio in modo che la shell sappia che hai finito. 

>>> for robot in robots: 
          print(robot) 
Uno 
Due 
Tre 

Il programma entra nell'elenco dei robot e estrae il primo valore, Uno, che poi stampa. Poiché questa è l'ultima riga del blocco, l'interprete ritorna all'elenco ed estrae il valore successivo. Questo si ripete fino a quando non ci sono più valori nell'elenco. A questo punto, il programma esce dal ciclo. 
Tendo a usare parole plurali per i nomi delle mie liste. Ciò mi consente di utilizzare la forma singolare del nome per fare riferimento agli elementi all'interno dell'elenco per un ciclo. Ad esempio, ogni elemento nella tupla di Robots è un robot. 
Se desideri scorrere gli elementi in un dizionario, devi fornire due variabili per memorizzare i singoli elementi. È inoltre necessario utilizzare il metodo items della classe dictionary. Ciò consente di accedere a turno a ciascuna coppia chiave / valore. 

>>> for nome, dati in Robots.items(): 
                print(nome + ':' + dati) 
colore:nero 
tipo: con ruote 

È possibile utilizzare la funzione enumerate per aggiungere un valore numerico sequenziale all'output di un ciclo for. 

>>> for num, robot in enumerate(robots): 
                print(num, robot) 
(0, 'Uno') 
(1, "Due") 
(2, "Tre") 

Ciclo while 

Mentre un ciclo for esegue un blocco di codice per ogni elemento in un elenco, il ciclo while esegue un blocco di codice fintanto che la sua condizione restituisce true
Viene spesso utilizzato per eseguire codice un numero specifico di volte o mentre il sistema si trova in uno stato specifico. Per scorrere il codice un numero specifico di volte, utilizzare una variabile per contenere un valore intero. Nell'esempio seguente, diciamo al programma di eseguire il codice fintanto che il valore della nostra variabile di conteggio è inferiore a cinque. 

>>> conta = 1 
>>> while conta <5: 
            print(conta)
            conta = conta + 1

Iniziamo dichiarando una variabile, conta, per contenere il nostro numero intero, e gli assegniamo il valore 1. 
Entriamo nel ciclo e il valore di 1 è minore di 5, quindi il codice stampa il valore sulla console. 
Quindi incrementiamo il valore di count di 1. Perché questa è l'ultima istruzione del ciclo e l'ultimo valore valutato se la condizione while era inferiore a 5, il codice ritorna alla clausola while. 
Il valore di count, ora 2, è ancora inferiore a 5, quindi il codice viene eseguito di nuovo. Questo processo si ripete fino a quando il valore di count è 5. 
Cinque non è inferiore a cinque, quindi l'interprete esce dal ciclo senza eseguire il codice nel blocco. 
Se ci fossimo dimenticati di incrementare la variabile conta, sarebbe risultato un ciclo aperto. 
Poiché conta è uguale a 1 e non lo incrementiamo mai, il valore di conta è sempre uguale a 1. Uno è inferiore a cinque, quindi l'esecuzione del codice non si interromperà mai e dovremmo premere Ctrl-C per terminarlo. 
Viene anche utilizzato come un tipo di ciclo principale, eseguendo il codice continuamente. Vedi quanto segue in molti programmi: 

while(true): 

True restituisce sempre true; pertanto, il codice all'interno di questo blocco continua a essere eseguito finché non si esce dal programma. 
Questo è chiamato un ciclo aperto poiché non si chiude mai. 
Fortunatamente, esiste un modo conveniente per uscire dai loop aperti. Se ti trovi in ​​un ciclo aperto, o vuoi semplicemente uscire da un programma arbitrariamente, premi Ctrl-C
Ciò causa la chiusura immediata del programma. Lo userai frequentemente. Questa tecnica può essere utilizzata anche per far aspettare il programma una condizione specifica da soddisfare. Ad esempio, se richiedessimo la disponibilità di una connessione seriale prima di continuare, avremmo prima avviato il comando di connessione. Quindi potremmo attendere il completamento della connessione prima di continuare utilizzando alcuni come questo: 

while(!connesso): 
            pass

Il punto esclamativo significa not. Quindi, in questo caso, supponendo che la variabile connesso contenga la connessione seriale che restituisce true quando viene stabilita, stiamo dicendo al programma di eseguire il codice contenuto nel blocco while fintanto che non è connesso. In questo caso, il codice che gli diciamo di eseguire è chiamato pass, che è un comando vuoto. Viene utilizzato quando in realtà non vuoi fare nulla, ma hai bisogno di qualcosa in quel posto. Quindi, stiamo dicendo al sistema questo: "Anche se non sei connesso, non fare nulla e continua finché non sei connesso".

Nessun commento: