Transcript for:
Corso Completo: Python per Principianti

Ciao a tutti ragazzi dal vostro carissimo  Pitone Programmatore. Benvenuti sul mio canale,   dove vi insegno i linguaggi di programmazione  in modo pratico, veloce e divertente.   Sono felice di presentarvi oggi questo favoloso  corso completo: Python per Principianti. Se non   hai mai scritto del codice di programmazione  prima d’ora, e vuoi imparare a programmare   partendo da zero, questo video è perfetto per te.  Oppure, se hai già un po’ d’esperienza e desideri   un corso che illustri in modo chiaro tutti gli  argomenti fondamentali del linguaggio Python,   e che puoi riconsultare ogni qualvolta necessiti  di informazioni su un dato argomento, questo è   il video giusto. Il python è il mio linguaggio  preferito in assoluto! E’ estremamente semplice,   perciò è il miglior linguaggio da imparare per  chi non ha mai programmato e inizia da zero. Allo   stesso tempo, è un linguaggio potentissimo, che  permette di creare app per smartphone, software   di intelligenza artificiale e machine learning,  videogames, siti internet e tanto altro. Non a   caso è uno dei linguaggi più popolari del momento,  ed è usatissimo da aziende come Google, Instagram,   Uber, Netflix, Spotify e tante altre...perciò se  cerchi un lavoro, è il linguaggio giusto per te.   In questo video impareremo insieme tutti gli  elementi fondamentali del Python e li useremo   per realizzare, passo passo, una bellissima app.  La app consisterà in un assistente virtuale,   che accoglierà i clienti un un nostro ipotetico  bar immaginario, proponendogli delle freschissime   bevande. Al termine di questo video sarai  capace di leggere e comprendere un codice   di programmazione come questo e di scriverlo con  le tue mani per creare delle fantastiche app dagli   usi più disparati. Durante il corso ti assegnerò  anche un piccolo esercizio da risolvere, per   mettere alla prova le nozioni che avrai appreso. Bene, è ora di iniziare insieme questa bella   esperienza di apprendimento del Python.  Non importa se sei grande o piccino, potrai   scrivere il tuo primo programma Python in pochi  secondi, letteralmente! Ora partiamo subito e,   mentre scorre la sigla, clicca il tasto Iscriviti,  attivando anche la campanella, per non perderti   i miei prossimi video, didattici e divertenti,  sul meraviglioso mondo della programmazione.   Bene, prima di iniziare a programmare in  Python, dobbiamo scaricarlo ed installarlo   sul nostro pc. Se hai già Python installato,  salta questa parte, andando direttamente al   capitolo successivo. Trovi l’elenco dei capitoli  quì sotto il video, nel box di descrizione.   Benissimo, per scaricare Python  andiamo sul sito python.org/downloads,   trovi il link sempre in descrizione. Clicchiamo qui, su questo bel pulsantone giallo:   Download Python. Non preoccuparti se vedi  un codice di versione leggermente diverso,   perché Python è in continuo aggiornamento.  Terminato lo scaricamento, avviamo il file   di installazione, che troverai nella cartella  dei download o direttamente qui sul browser.   Assicurati di mettere una spunta su  questa casella, e premi install now.   Al termine dell’installazione apriamo l’ambiente  di sviluppo di Python, che si chiama IDLE:   Integrated Development and Learning Environment.  Premiamo il tasto Windows sulla tastiera e   scriviamo IDLE. Eccolo qui, apriamolo. Ottimo, questa è la cosiddetta shell di   python. E’ qui nella shell che vedremo il  nostro programma in azione. Prima però il   nostro programma dobbiamo scriverlo. Andiamo  su File e scegliamo New File. E’ in questa   finestra che scriveremo le righe di codice  di cui si comporrà il nostro programma.   Per lavorare meglio possiamo modificare  esteticamente la finestra. Io vado su Option,   Configure Idle e aumento la dimensione  del testo. Premo Apply, ecco, molto   meglio. E per stancare meno gli occhi, vado su  Highlights, e scelgo il tema scuro. Premo Apply,   beeenissimo, ora sono proprio a mio agio. Ottimo, siamo pronti a dare vita al nostro primo   programma! In questa finestra possiamo scrivere  i comandi che il programma deve eseguire.   Come abbiamo detto a inizio video, realizzeremo  insieme un app per il nostro pub immaginario,   che chiameremo...Pub Drink&Codice! Si, mi  piace. L’app consisterà in un simpatico barista   virtuale che accoglierà i clienti e gli proporrà  degli ottimi drink. Immagino già uno schermo,   all’ingresso del pub, dove i clienti useranno  l’app per ordinare un bel Mojito o una Limonata!   Beh, che aspettiamo, iniziamo subito! La prima cosa che la nostra app deve fare,   è stampare un bel messaggio di  benvenuto per il cliente, no?   Ma come si fa a stampare un messaggio a schermo? E’ molto semplice, si usa una funzione chiamata   print, che in inglese significa stampare. Guarda,  l’ambiente di sviluppo ha riconosciuto la funzione   e l’ha colorata in viola! Le funzioni sono  rappresentate in viola e sono sempre seguite da   parentesi tonde. All’interno delle parentesi tonde  inseriamo ciò che vogliamo stampare a schermo.   Vogliamo stampare un testo di benvenuto, ad  esempio: Benvenuto al pub Drink&Codici. Il testo,   nel mondo della programmazione, si chiama  stringa, e va inserito tra apici, singoli o   doppi! Ecco che l’ambiente di sviluppo riconosce  che è una stringa di testo e lo colora in verde,   il mio colore preferito! Bene, ora abbiamo  una funzione print che stamperà una stringa.   Ma come avviamo la nostra  app per vedere se funziona?   E’ molto semplice, premiamo il tasto F5 sulla  tastiera oppure andiamo quassù su Run e premiamo   Run Module. Ci verrà richiesto di salvare il file.  Io lo salvo sul Desktop col nome baristaVirtuale.   Salviamo e….funziona! L’app è stata eseguita e  ha stampato a schermo il messaggio di benvenuto!   Forse starai pensando che questa interfaccia non  è molto carina esteticamente, e che un cliente che   utilizzasse questa nostra app non apprezzerebbe  particolarmente la grafica. Ma non preoccuparti,   con Python è possibile creare delle bellissime  interfacce grafiche e persino videogiochi. Sul   mio canale ho pubblicato alcuni video su questi  argomenti, ma sono di livello un tantino più   avanzato. Perciò per ora, continuiamo ad  apprendere per bene i concetti di base.   Ora, sotto questo messaggio, vorrei stampare  degli altri messaggi, in cui il nostro barman   virtuale si presenta e accoglie il cliente. Ma come stampiamo degli altri messaggi,   uno dopo l’altro? Facilissimo! Torniamo al file   baristaVirtuale e aggiungiamo una nuova funzione  print, con una nuova stringa: Mi chiamo EdoBot!   E in un’altra print...e sono pronto a servirti!  Con una bella faccina. Vi piace il nome che ho   inventato per il nostro barista virtuale? Se  no, modificatelo a piacere. Le istruzioni,   nei linguaggi di programmazione, vengono  eseguite in ordine, dall’alto verso il basso,   quindi queste tre stringhe verranno stampate una  dopo l’altra. Avviamo nuovamente il programma,   premendo F5. Se ti richiede di salvare, accetta.  E….voilà! I messaggi vengono stampati uno dopo   l’altro! Immagino già l’espressione sul viso dei  nostri clienti quando verranno accolti da EdoBot!   Ora che il cliente è accolto nel pub, veniamo  al sodo! Vogliamo presentare al cliente i drink   disponibili nella nostra cantina e il loro prezzo.  Nella realtà, avremo una vera e propria cantina,   con varie scatole dove sono conservati drink e  altri prodotti utili. Nell’app dovremo quindi   ricreare una cantina virtuale: invece di vere  scatole vi saranno delle scatole virtuali,   ovvero delle aree di memoria dove conservare i  drink disponibili, i prezzi e altri dati utili.   Ma come si creano delle aree di  memoria per conservare dati utili?   Si creano con le variabili! Le variabili sono  un elemento fondamentale della programmazione,   che vi spiego subito. Per spiegarvele, apro un  attimo un nuovo File, andando su File e New File   e lo salvo subito con File e Save As, chiamandolo  spiegazioni. In questo file vi spiegherò le   nozioni di programmazione. Una volta spiegate,  le applicheremo alla nostra app baristaVirtuale.   Bene, immaginiamo di avere nella cantina  del nostro pub, un drink speciale amatissimo   dai clienti, che si chiama “VodkaBot”. Voglio  inserirlo nella memoria del nostro programma.   Allora creo una variabile che si chiama  drink_speciale e il suo valore è uguale   a “DigitalVodka”. Ecco fatto! Semplice, no? Ho  creato un’area di memoria chiamata drink_speciale,   che contiene una stringa, DigitalVodka.  Immagina proprio una scatola con un’etichetta,   drink_speciale, che contiene un testo,  DigitalVodka. Se eseguiamo questo programma   con F5. Non viene stampato nessun messaggio a  schermo. Beh, dopotutto non abbiamo inserito   nessuna funzione print, ed è solo la print che  può stampare messaggi a schermo. Ma anche se a   schermo non vediamo nulla, il comando è stato  eseguito e la variabile è stata creata. Te lo   dimostro subito! Qui sulla Shell posso vedere le  variabili memorizzate. Basta scrivere il nome,   drink_speciale, premo invio... bam ecco il  valore, DigitalVodka! Ma posso anche stampare   la variabile con una semplice print. Torno al  file, scrivo print e all’interno inserisco il nome   della variabile. Il programma leggerà il valore  della variabile, che è la stringa DigitalVodka,   e inserirà tale stringa all’interno della print.  E’ come se la variabile fosse un pacchetto e la   stringa fosse il regalo all’interno. Il  programma spacchetterà questa variabile,   rivelando la stringa all’interno. Avvio con F5.  Ecco qua, DigitalVodka! Attenzione! Torniamo   al file...il nome della variabile non va scritto  fra apici, così. Perché così facendo non staremmo   stampando la variabile drink_speciale. Staremmo  stampando una stringa di testo, con scritto   drink_speciale, che non ha nulla a che fare con  la variabile. Avviamo il programma. Ecco, vedi?   Quindi, attenzione. Le stringhe vanno  fra apici e sono di colore verde. Le   variabili sono di colore bianco e non hanno  apici, ecco eliminiamole. Memorizzare una   stringa dentro una variabile va benissimo,  è proprio quello che abbiamo fatto qui.   Possiamo anche modificare il valore di una  variabile. Se abbiamo inventato una nuova ricetta   per il nostro drink speciale, e invece della Vodka  usiamo il Whiskey riscriviamo drink_speciale ma   stavolta lo chiamiamo “TechnoWhiskey”. Stampiamo  nuovamente la variabile a schermo. E prima di   avviare il programma ricorda: il codice viene  eseguito dall’alto verso il basso. Quindi prima   viene creata la variabile e assegnatagli la  stringa DigitalVodka. Poi viene stampata a   schermo. Poi alla variabile viene assegnato un  nuovo valore, TechnoWhiskey, sovrascrivendo quello   precedente. Infine viene ristampata a schermo.  Queste due print sono proprio ciò che vedremo a   schermo, infatti se avvio il programma...ecco  qua! DigitalVodka poi TechnoWhiskey.   Attenzione: le variabili esistono e mantengono i  valori assegnati, solo durante l’esecuzione del   programma. Quando il programma viene terminato  o viene riavviato le variabili spariscono,   e i dati salvati in esse vengono persi. Ottimo, torniamo al codice. Ricapitolando,   per creare una variabile dove conservare dei  dati utili, scrivo il nome della variabile,   metto il segno uguale e inserisco il dato  desiderato, in questo caso una stringa. Non   devo per forza inserire una stringa, esistono  infatti altri tipi di dati, che posso assegnare   a una variabile. Un numero ad esempio, vi faccio  vedere. Cancelliamo un attimo. E supponiamo che,   in cantina, abbiamo una grande scorta di drink  speciali, ad esempio 28 porzioni. Creo una nuova   variabile chiamata quantità_drink_speciale e le  assegno il numero 28. Stampiamo la variabile con   una bella print. Avviamo il programma. Ecco qua,  28! Come vedete i numeri non vanno racchiusi fra   apici. Se inserisco gli apici, così, questo non  sarà più un dato di tipo numerico, ma una stringa,   e vedremo più avanti i problemi che potrebbero  insorgere. Togliamo gli apici. Benissimo, questo   in particolare è un dato di tipo int, cioè un  numero intero. Ma posso inserire anche numeri con   la virgola, ovvero di tipo float. Mi può servire  un numero con la virgola per memorizzare il prezzo   di un drink. Cancelliamo. Scriviamo prezzo_drink  uguale 5 euro e 50 centesimi. Stampiamo, avviamo,   e voilà! Oltre le variabili di tipo stringa,  intero e float esiste anche il booleano.   Cancelliamo. Il booleano può avere due valori:  True o False, cioè Vero o Falso. Ad esempio,   creo una variabile che mi dice se il pub è aperto  al pubblico. Scrivo pub_aperto, uguale, True,   Vero se il pub è aperto. Oppure scrivo False se  il pub non è aperto, magari è chiuso per ferie   o per fallimento…speriamo di no! Stampiamo con  una print, avviamo con F5, ecco fatto, Falso!   Ottimo!! Ora che abbiamo imparato ad usare le  variabili per conservare dei dati utili, usiamole   subito nella nostra app! Cancelliamo tutto  qui, ok, e torniamo al file baristaVirtuale.   Le variabili, solitamente, si dichiarano  all’inizio del programma. Inseriamo il drink   speciale da proporre al cliente: drink_speciale  = DigitalVodka. E il suo prezzo: prezzo_drink = 5   euro e 50. Abbiamo imparato anche come stampare  a schermo le variabili! Procediamo subito! Dopo   che EdoBot si presenta, vogliamo che dica: "Il  drink più cool del nostro pub è:" e subito dopo   scriviamo print drink_speciale. Avviamo la nostra  app e vediamo che succede. Fanstastico! Dopo le   solite presentazioni viene stampato a schermo  “Il drink più cool del nostro pub è DigitalVodka!   Torniamo al codice e presentiamo anche il prezzo. print, Provalo subito al modico prezzo di. Print   prezzo drink. Avviamo nuovamente! Ecco quà! Il  nostro barman virtuale sta facendo davvero un   ottimo lavoro parlando coi clienti! Ora però,  i clienti devono anche potergli rispondere!   Per scegliere quali drink acquistare o inserire i  propri dati come nome, cognome, data di nascita.   Fin’ora il cliente può solo  leggere i messaggi a schermo.   Ma come può scrivere, per inserire dati,  informazioni e compiere delle scelte?   Ve lo spiego subito, torniamo  al file spiegazioni.   Hai imparato bene che il programma può inviare  un’output, leggibile a schermo, usando la   funzione print. Se scrivo print Giacomino...e  avvio il programma. Ecco quà leggo a schermo   Giacomino. Ma se io volessi inviare un input  al programma, ad esempio scrivere il mio nome,   invece che una print, che cancelliamo, scrivo una  input, semplicissimo. Non è nemmeno necessario   inserire roba fra parentesi tonde. Se ora avvio il  programma! Magia! Compare un cursore lampeggiante   e posso scrivere parole, numeri, caratteri  speciali, qualsiasi valore desideri. La funzione   input funziona in modo uguale e opposto alla  print. La print prende una stringa dal programma   e la da allo schermo. La input prende una stringa  dallo schermo, e la da al programma. Per inviare   questa bella stringa al programma premo invio.  Ora però il programma finisce, perché….torniamo   al codice….la input è sola soletta. E il valore  stringa che prende dallo schermo viene perso,   perché non viene salvato da nessuna parte.  Ma….abbiamo imparato come salvare dei valori   nel programma, no? Certamente, con le variabili.  Allora, andiamo qui e scriviamo stringa_inserita,   uguale, funzione input. In questo modo,  la stringa inserita a schermo dal cliente,   uscirà fuori dalla input() e verrà subito  salvata in una variabile, così non verrà   persa e potremo riutilizzarla. In linguaggio  informatico si dice che una funzione ritorna   un valore. Ad esempio la funzione input ritorna  una stringa, scritta a schermo dal cliente.   Ora che abbiamo salvato la stringa inserita in  una variabile, stampiamola a schermo per vedere   se è corretta! Come al solito scrivo print e il  nome della variabile di cui voglio leggere il   valore. Avviamo per vedere se funziona? Via! Ecco che appare l’indicatore e posso scrivere   qualcosa. Ora premo invio! Perfetto la stringa  viene salvata correttamente e poi mostrata a   schermo, è proprio quello che ho scritto! Fantastico, con queste conoscenze possiamo   già dialogare col cliente nella nostra  app, fare delle domande e ottenere delle   risposte. Puliamo tutto qui, ecco, che l’igiene è  importante, e torniamo all’app baristaVirtuale.   Dopo la piccola pubblicità del drink consigliato  dalla casa, chiediamo al cliente….”come ti   chiami”? Creiamo una variabile nome_cliente, dove  conservare il nome scritto a schermo dal cliente,   che verrà ritornato dalla input. E ora creiamo  un messaggio personalizzato per il cliente!   Scriviamo “Benvenuto carissimo” e stampiamo il  nome del cliente! Prima di avviare il programma,   chiediamogli anche la data di nascita! Ci serve  saperla perché nel nostro pub vendiamo anche drink   alcolici, e non vogliamo incorrere in sanzioni  per vendita a minorenni! Facciamo esattamente la   stessa cosa. Scrivo una domanda: In che anno sei  nato?. Salvo nella variabile anno_nascita l’anno   che verrà inserito dal cliente e poi gli rispondo:  “Sei nato nel”. print anno_nascita. Sembra   tutto in regola, proviamo se funziona, via! Fantastico! Dopo le stampe viste precedentemente,   il nostro bravo barman chiede chiede: Come ti  chiami? Posso scrivere! Giacomino. Benvenuto   carissimo Giacomino, perfetto! E ora...in  che anno sei nato? 2010. Sei nato nel 2010,   ottimo! Ora dobbiamo calcolare l’età del cliente  perché attenzione: se un cliente è nato nel 2010,   e siamo nel 2021, significa che il cliente ha 11  anni! E da normativa vigente non possiamo vendere   alcolici a un minorenne, soltanto anacolici. Ma come possiamo fare dei calcoli matematici   nel programma? Non solo per calcolare l’età  di un cliente, anche per tener conto dei   drink acquistati e venduti, per applicare  sconti fedeltà etc. Spostiamoci nel file   di spiegazione e ve lo spiego subito. Immaginiamo di avere nel nostro pub,   5 drink diversi, fra i quali il cliente  può scegliere. Sono pochi? Beh dai,   abbiamo appena aperto il pub! Più avanti i clienti  avranno più scelta, ma per ora i drink disponibili   sono 5. Scriviamolo: drink_disponibili = 5.  Supponiamo che 3 di essi siano alcolici e   2 analcolici. Allora, invece di un numero,  possiamo scrivere un’operazione matematica:   3+2. Stampiamo la variabile, ecco, e avviamo! Bene  l’operazione 3+2 ritorna un numero intero, cinque,   che viene salvato nella variabile e poi stampato.  Il più, è chiamato operatore, per la precisione   operatore binario, perché fa un calcolo fra due  numeri. Esistono tanti altri operatori binari,   i principali sono il più, il meno, il per e  il diviso. Oltre che fare calcoli con numeri,   possiamo fare calcoli con variabili che contengono  numeri. Cancelliamo e vediamo un esempio. Abbiamo   detto che i drink alcolici sono tre, ecco. E  che i drink analcolici sono 2. Allora i drink   disponibili sono pari alla somma degli alcolici  più gli analcolici. Così stiamo sommando i valori   contenuti nelle due variabili. Se stampiamo il  risultato e avviamo...benissimo, da sempre 5,   il calcolo è corretto! Oltre gli operatori binari  abbiamo anche gli operatori unari, sono molto   utili ti faccio vedere. Cancelliamo. Dichiaro la  variabile drink_disponibili pari a 5. E la stampo.   Ora immaginiamo di aver inventato due nuovi  freschissimi drink. Scrivo drink_disponibili += 2,   per aumentare di due il valore della variabile.  Se stampiamo...e avviamo…. Perfetto, i drink   disponibili sono ora 7. Esistono tanti altri  operatori unari, i principali sono la somma,   la sottrazione, la moltiplicazione e la  divisione. Oltre che coi numeri interi,   int, possiamo fare operazioni anche coi numeri  con la virgola, float. Cancelliamo e scriviamo   il prezzo di un drink: prezzo_drink = quattro  euro e 25 centesimi. I clienti più fedeli possono   accedere a uno sconto_fedeltà, pari a un euro  e cinquanta. Allora il prezzo_scontato è pari   a prezzo_drink meno sconto_fedeltà. Stampiamo  prezzo scontato...avviamo...ecco qua! I clienti   più simpatici, pagano solo 2 euro e 75. Bada che, le operazioni possiamo anche   inserirle direttamente dentro le print  o altre funzioni. Invece di definire   la variabile prezzo scontato e scrivere questa  print...cancelliamole...possiamo più rapidamente   scrivere print prezzo_drink - sconto_fedeltà.  Avviamo il programma e il risultato è lo stesso!   Perché calcola al volo il risultato della  sottrazione e lo stampa a schermo. In questo   modo il codice è più breve, ma il risultato di  questa sottrazione non viene conservato su nessuna   variabile, quindi una volta stampato a schermo  viene perso. Se vogliamo riutilizzarlo in futuro,   senza dover rifare la sottrazione ogni  volta, è meglio salvarlo su una variabile.   Bene cancelliamo e proseguiamo. Ricordi  le variabili di tipo booleano, ad esempio   pub_aperto uguale True? Esistono operatori anche  per i booleani e si chiamano operatori logici,   ma ne parleremo più tardi quando studieremo  la logica booleana. Cancelliamo.   Infine, esiste un operatore anche per le  stringhe! Vi faccio vedere, creiamo una variabile   di tipo stringa: nome_barman uguale “EdoBot”.  Stampiamo...avviamo...benissimo, EdoBot. Ora,   questo simpatico nome è formato da Edo più Bot.  Possiamo proprio scrivere così: stringa Edo, più,   stringa Bot, ecco fatto. Se avviamo, il risultato  sarà lo stesso! Bene, questo più fra due stringhe   si chiama operatore di concatenazione, e come hai  appena visto produce una stringa risultato che è   data dall’unione delle due stringhe originarie. Anche l’operatore concatenazione, come gli   operatori visti precedentemente, può essere  inserito direttamente all’interno di una print,   per stampare messaggi formati da più stringhe.  Posso ad esempio scrivere: Ciao, mi chiamo,   più, EdoBot. Avviamo, ecco qua! Oppure, dato  che la stringa EdoBot è già contenuta nella   variabile nome_barman sarebbe ancora meglio  scrivere, ciao mi chiamo più, nome_barman.   Avviamo e voilà il risultato è il medesimo! Torniamo al codice e...attenzione! L’operatore   di concatenazione è rappresentato  con un più, ma, come avrete intuito,   funziona in modo totalmente diverso dall’operatore  somma visto prima! L’operatore di concatenazione   unisce due stringhe, invece l’operatore somma  fa un addizione matematica fra due numeri,   siano essi di tipo int o float. Non fate  confusione fra i due operatori, anche se entrambi   sono rappresentati con un più. Vi faccio vedere  un errore molto comune, cancelliamo un po’.   Creo una variabile di tipo int, quindi  un numero intero. Ora ne creo un’altra di   tipo stringa. Non farti ingannare dal fatto  che nella stringa vi sia scritto un due. Il   programma non lo vede come un numero intero,  ma come una scritta, una stringa di testo,   perché è racchiuso fra apici. Infatti l’ambiente  di sviluppo lo colora in verde. Mentre i numeri,   interi o float, sono colorati in bianco. Ora...non senti una voglia malsana e irrefrenabile   di sommare un numero con una stringa  per vedere cosa succede? Te lo dico   io cosa succede...l’apocalisse! . No  dai, niente di così grave. Quello che   avviene si chiama eccezione proviamoci  insieme per scoprire di cosa si tratta.   Provo a scrivere c uguale “a più b”. Pronti  all’esplosione? Avviamo il programma. . Ecco qua   la scritta che vediamo in rosso è un’eccezione.  In pratica, è avvenuto un errore nel programma. Ci   viene messa in evidenza la riga di codice che ha  generato l’errore, come ci aspettavamo è proprio   lei: c uguale a più b. L’errore è classificato  come TypeError, errore di tipo, e viene riportata   anche una breve descrizione: i tipi degli operandi  non sono supportati per il simbolo più. Perché   stiamo provando a sommare un int, la variabile a,  con una stringa, la variabile b. E’ come sommare   un numero con una parola, non ha senso! Quello che  possiamo fare però, è convertire la stringa in un   numero intero, torniamo al codice. Guardate  cosa faccio. Racchiudo la variabile stringa   all’interno della funzione int. La funzione  int sono capaci di convertire in numeri interi,   le variabili di tipo stringa compatibili. La  funzione int, quindi, prenderà il due di tipo   stringa e ritornerà un due di tipo int, che sarà  immediatamente sommato, senza errori, con l’altra   variabile int. Se stampiamo c...e avviamo.  Meraviglioso, niente eccezioni e il risultato   è pari a 5. Come starai immaginando, oltre la  funzione di conversione int esiste una funzione   per ciascuno dei tipi di dati che ti ho insegnato:  float, booleano e stringa. E a proposito della   funzione stringa, facciamo un esperimento! Invece  di convertire la variabile stringa in intero,   proviamo a convertire la variabile intero in  stringa e vediamo che succede. Avviamo! Guarda   un po’. Stavolta il risultato è la stringa 3 2.  Questo perché, ora abbiamo due stringhe. E il più   fra due stringhe funge sempre da concatenazione,  non da addizione matematica. Quindi non otteniamo   un numero 5 ma una stringa 3 2, formata  dalla concatenazione delle stringhe 3 e 2.   Benissimo, ora che abbiamo appreso tutte  queste nuove conoscenze, è il momento   di applicarle alla nostra strepitosa app! Iniziamo col rendere il codice più ordinato   ed organizzato. Aggiungiamo all’inizio una  variabile nome_barman con valore EdoBot. Ed ora,   uniamo queste due print in una sola, con  l’operatore di concatenazione: print, Mi chiamo,   più, nome_barman, più, e sono pronto a servirti!  Bene così il messaggio verrà stampato tutto nella   stessa riga, utilizzando inoltre la variabile  nome_barman. Proviamo ad avviare...ecco quà,   perfetto! Facciamo la stessa cosa con  gli altri messaggi, Il drink più cool   del nostro pub è:...più, e ora inseriamo la  variabile int, drink_speciale, avendo cura   di convertirla in stringa grazie alla funzione  che abbiamo imparato. Facciamo similmente per   la print seguente….stavola la variabile è float,  convertiamola sempre in stringa per concatenarla   senza errori. Proviamo ad avviare...che  bellezza, il programma è sempre più carino.   Ora aggiungiamo al codice dei commenti! I  commenti sono delle frasi che possiamo inserire   per spiegare a parole le diverse istruzioni  del codice. Sono molto importanti quando si   lavora in team, perché se passiamo il codice a  un nostro collega, egli potrebbe far fatica a   capirlo. O anche noi stessi, fra qualche mese,  potremmo dimenticarci i significati di certe   istruzioni e il perché le abbiamo utilizzate. Ora,  la nostra app è molto semplice per adesso, ma fa   sempre bene aggiungere qualche breve commento. Per aggiungere un commento scriviamo cancellatto   o hashtag. Questo simbolo serve per dire al  programma di ignorare completamente quello   che scriveremo, perché si tratta appunto di  un commento, una spiegazione a parole che   serve solo a noi umani per capire il codice.  L’ambiente di sviluppo riconosce il simbolo e   lo evidenzia in rosso. Scriviamo ad esempio  “DICHIARAZIONE VARIABILI”, perché in questa   sezione del codice stiamo dichiarando le variabili  che ci servono. Poi, dinanzi alla prima funzione,   scriviamo “INIZIO DEL PROGRAMMA”, perché è da  qui in poi che inizia la sostanza. I commenti,   sono utili e vantaggiosi, se non si usano in modo  eccessivo! Se inizio a commentare ogni istruzione,   anche la più banale, con commenti poco rilevanti,  sto solo inquinando e appesantendo il codice,   invece di renderlo comprensibile. Perciò, non vi invito ad aggiungere un   commento per ognuna di queste print, ad esempio,  perché sono già chiare e comprensibili di per sé.   Bene, dopo questa digressione sui  commenti, procediamo col codice!   Cancelliamo tutte queste istruzioni, che ora sono  un po’ di troppo, e inseriamo solo la richiesta   più importante! Inserisci il tuo anno di nascita.  Questo carattere, \n, che precede la stringa,   non è un errore di battitura. E’ un carattere  speciale delle stringhe che serve per andare   a capo. Infatti se avvio il programma...ecco  qui, la stringa va subito a capo, perché inizia   col carattere speciale, e poi continua col testo.  Così si crea un bello spazio che separa i messaggi   introduttivi, dalle domande che andremo a fare  al cliente. Ora diamo al cliente la facoltà di   rispondere inserendo il suo anno di nascita.  Scrivo anno_nascita, uguale, input. La input,   come ricorderai, ritorna una stringa. Ma  vogliamo che anno_nascita sia un numero int,   così non avverranno errori quando calcoleremo  l’età del cliente. Allora converto al volo il   valore ritornato dalla input, racchiudendola  dentro la funzione int. Perfetto, ora posso   usarla per calcolare gli anni del cliente. Scrivo  anni_cliente, uguale, 2021 che è l’anno attuale,   meno l’anno di nascita del cliente. Ora possiamo  stampare a schermo l’età del cliente scrivendo   print Hai, più, anni_cliente convertita in  stringa, perché di base è un intero, più,   anni. Vediamo se funziona? Tre, due, uno, avvia! Bene, dopo la richiesta di inserimento posso   inserire 2005 ad esempio. Premo invio. Hai  16 anni, magnifico funziona benissimo!   Ora che abbiamo calcolato l’età voglio proporre  al cliente dei drink, ma tenendo a mente se è   maggiorenne. Mi spiego meglio: se il cliente  è maggiorenne gli propongo drink alcolici e   analcolici, stampandoli a schermo con  una print. Altrimenti, se è minorenne,   stampo con una print soltanto drink analcolici. Ma come posso eseguire una print o altre   istruzioni, soltanto se è rispettata una  condizione da me decisa? E’ molto semplice,   passiamo al file spiegazioni e vediamo insieme. Immaginiamo di avere una variabile dov’è   conservata l’età del cliente: anni_cliente  uguale 16, ad esempio. Bene, voglio che   venga stampato a schermo con una print: "Sei  minorenne: puoi ordinare solo analcolici" , se   il cliente è minorenne, ovvero….se anni_cliente  è minore di 18. Beh, scriviamo proprio questo:   se anni_cliente è minore di 18, in inglese  se si dice if. Signori signori ecco a voi   la dichiarazione if. Come vedete è leggibilissima,  stiamo scrivendo, quasi con parole vere e proprie,   il requisito che ci interessa. Ora scriviamo  due punti, premiamo invio per andare a capo,   e scriviamo il messaggio desiderato...bene! Avrai  notato che quando ho premuto invio per andare a   capo, è comparso automaticamente una sorta di  spazio. Questo spazio si chiama indentazione.   Tranquillo, ora ti spiego per bene tutto quanto. La dichiarazione if serve per eseguire una o più   istruzioni se e solo se una condizione è vera.  E’ costituita dalla parola chiave if, colorata   in arancione, e dalla condizione da rispettare,  seguita dai due punti. Poi abbiamo un’indentazione   e infine l’istruzione da eseguire se questa  condizione è vera. Ora anni_cliente è pari a 16,   quindi è vero che è minore di 18! Perciò questa  print verrà eseguita. Avviamo il programma   e….Sei minorenne puoi ordinare solo analcolici,  benissimo, il messaggio è stato stampato! Se torno   al codice e cambio il valore anni_cliente a 23  ad esempio...questa condizione non sarà più vera!   Quindi se eseguo il programma! Silenzio di tomba,  il messaggio non viene più stampato. Come vedi la   dichiarazione if è estremamente utile! E ci offre  tante altre possibilità! Torniamo al codice. Nella   condizione ho usato il simbolo minore. Questo si  chiama operatore di comparazione, e ne esistono   tanti altri. Abbiamo il minore uguale, il  maggiore, il maggiore uguale. Il doppio uguale,   che controlla se anni_cliente ha valore uguale  a 18. Attenzione a non usare l’uguale singolo.   Questo è un operatore di assegnazione che  serve ad assegnare un valore alla variabile,   come abbiamo fatto qui. E’ il doppio uguale che  serve a controllare se la variabile è uguale ad   un valore. Possiamo anche controllare  se la variabile è diversa da un valore,   usando punto esclamativo uguale. Tutti gli  operatori di comparazione appena visti,   comparano due elementi e restituiscono un valore  booleano: Vero o Falso. Questo valore serve alla   if per decidere se eseguire o meno l’istruzione  indentata. E a proposito, se cancelli per sbaglio   l’indentazione puoi inserirla col tasto tab  sulla tastiera. Se dopo l’istruzione inserita   vado a capo col tasto invio, posso inserire altre  istruzioni da eseguire se la condizione è vera,   sempre mantenendo l’indentazione. Ma per  ora non ne abbiamo bisogno, cancelliamo e   rimettiamo l’operatore che ci interessa: minore. Ricapitolando, stiamo stampando Sei Minorenne se   il cliente ha meno di diciotto anni. Ma in caso  abbia più di diciott’anni, voglio stampare Sei   Maggiorenne. Come posso fare? E’ semplicissimo!  Dopo la dichiarazione if, aggiungo else,   che in inglese significa altrimenti. Due  punti, invio...e qui, sempre con indentazione,   scrivo "Sei maggiorenne: puoi ordinare alcolici  e analcolici". Semplice no? Nella if scriviamo le   istruzioni da eseguire se la condizione è vera.  Nella else, scriviamo quelle da eseguire se la   condizione è falsa. La else è opzionale, possiamo  aggiungerla solo se ne abbiamo bisogno. Proviamo   ad avviare il codice? Ora anni_cliente è pari a  23, quindi la condizione della if è falsa. Perciò   questa print non verrà eseguita, ma verrà eseguita  quella all’interno della dichiarazione else.   Avviamo e...fantastico funziona! Sei maggiorenne,  puoi ordinare alcolici e alcolici ahhhh,   che bello essere adulti! Oltre la else posso anche  aggiungere la dichiarazione elif! La elif viene   eseguita se la condizione della if è false, ma se  un’altra condizione da noi specificata è vera. E’   molto utile, vi spiego subito. Se il cliente ha  meno di 18 anni stampo Sei minorenne. Altrimenti,   se il cliente ha più di 80 anni voglio stampare:  Puoi ordinare alcolici, ma vacci piano nonno!   Se ora il cliente ha 85 anni e avvio il  programma…ecco che compare la nostra frase,   abbastanza antipatica! Posso inserire quante elif  desidero, una dopo l’altra. Sempre dopo la if,   ma prima della else, se presente. Se abbiamo  una else alla fine, come in questo caso,   essa verrà eseguita se la condizione della if e  di tutte le altre elif sono false. Ad esempio,   se il cliente avesse un’età che non è minore  di 18, e non è neanche maggiore di 80,   ad esempio 45 anni, verrà eseguita l’istruzione  nella else. Avvio il programma, e voilà!   Bene, oltre che coi numeri, int o float, possiamo  usare la dichiarazione if anche con le stringhe.   Cancelliamo tutto e scriviamo il nome del  cliente che sta utilizzando la nostra app:   nome_cliente uguale Piergiorgio ad esempio. Se  nome_cliente equivale a Giacomino, il nostro   cliente preferito, voglio stampare a schermo "Ciao  Giacomino, che piacere rivederti! <3". Se avviamo   il programma adesso...non verrà stampato alcun  messaggio...perché il nome_cliente non è uguale   a Giacomino. Se sostituisco il nome_cliente con  Giacomino, la condizione sarà vera! Avviamo…ed   ecco il nostro affettuosissimo messaggio! Ottimo, abbiamo usato la dichiarazione if   coi numeri, con le stringhe...e ora non resta  che usarla coi booleani! Cancelliamo tutto e   creiamo una variabile booleana, pub_aperto uguale  True. Possiamo servire dei drink solo se il nostro   pub è aperto, ovviamente. Allora scrivo if,  pub_aperto, equivale a True...stampa a schermo:   Siamo pronti a servirti! Con le variabili booleane  posso anche scrivere soltanto if pub_aperto,   il risultato sarà lo stesso, e così la condizione  è ancora più leggibile: se il pub è aperto, stampa   Siamo pronti a servirti. Se avviamo, il messaggio  verrà stampato! Se torno al codice e inserisco   False, riavviando non vedremo alcun messaggio. Perfetto! Ora, immaginiamo di render disponibile   un servizio di consegna a domicilio per i nostri  clienti. Vorrò stampare Siamo pronti a servirti,   se il pub è aperto oppure se la  consegna a domicilio è attiva.   Come posso fare ciò? Facilissimo: con  gli Operatori di Logica Booleana.   Creo una nuova variabile consegna domicilio  attiva, uguale True. Ho abbreviato un po’ se   no il nome è troppo lungo. Ora posso modificare  la if scrivendo: se pub aperto oppure consegna   a domicilio è attiva. L’operatore or, è un  operatore booleano che controlla le due variabili   e restituisce True se almeno una delle due è vera.  Esiste anche l’operatore and, che restituisce True   solo se entrambe le variabili sono vere. Infine  abbiamo l’operatore not, che serve ad invertire il   valore booleano di una variabile: se la variabile  è True restituirà False, se la variabile è False   restituirà True. Ad esempio, cancelliamo un attimo  la condizione….posso scrivere if not pub_chiuso,   cioè se il pub non è chiuso, stampa Siamo pronti a  servirti. Se la variabile ha valore True, quindi è   vero che il pub è chiuso, la not restituirà False  alla funzione if, quindi il messaggio non verrà   stampato. Ed è corretto, perché se il pub è chiuso  non vogliamo stampare Siamo pronti a servirti.   Possiamo anche usare più operatori booleani  per creare condizioni complesse! Ad esempio,   se il pub non è chiuso, oppure la consegna a  domicilio è attiva, e non sono finiti i drink,   possiamo servire i clienti. Beh, questa condizione  è un bel po’ complessa! La Logica Booleana   offre un sacco di possibilità ma è sempre buona  norma creare condizioni brevi e comprensibili.   Ottimo, ora che abbiamo appreso un sacco di  ottime nozioni, possiamo continuare la nostra app.   Torniamo a baristaVirtuale e, dopo aver calcolato  l’età del cliente, vogliamo offrirgli degli   alcolici soltanto se è maggiorenne. Allora scrivo  una if: se anni cliente è minore di diciotto,   stampa Sei minorenne, puoi ordinare solo  analcolici. Altrimenti Sei maggiorenne,   puoi ordinare alcolici ed analcolici. Ho  messo un carattere a capo in entrambi per   fare un po’ di spazio dai messaggi precedenti.  Un bel F5 per avviare il pogramma e...Inserisci   il tuo anno di nascita...2000...Hai 21  anni, Sei maggiorenne, ottimo! Se riavvio   il programma...e scrivo 2005….hai 16 anni,  Sei minorenne, bene funziona perfettamente.   Bene ragazzi, abbiamo già appreso un sacco di  nozioni Python, e ne impareremo tante altre,   estremamente utili, nel corso del video.  Perciò è il momento giusto per assegnarti un   bell’esercizio. Sarà breve ma racchiuderà tutte  le nozioni finora apprese, così potrai metterle   in pratica e consolidarle. Se stai trovando il  video interessante lasciami un bel mi piace,   è davvero gradito, e scrivimi in un commento come  mai hai deciso di imparare il Python, sono curioso   di leggere le tue motivazioni! Iscriviti al canale  per non perdervi i prossimi video, didattici e di   intrattenimento, sul mondo della programmazione. E ora…vediamo l’esercizio.   Dobbiamo realizzare una mini-app che… Definisce 3 variabili: prezzo_drink,   pari a 5 euro e 50 centesimi, sconto,  pari a 1 euro e cliente preferito pari a   Giacomino o un nome a tuo piacimento. Chiede al cliente come si chiama   Chiede al cliente quanti anni ha Se il cliente si chiama Giacomino   e ha più di 25 anni applica uno sconto al  prezzo del drink. Altrimenti non lo applica.   Infine, stampa a schermo il prezzo  del drink, con una frase a piacere.   Se desideri provare a risolvere  l’esercizio, metti il video in pausa   adesso e dedica qualche minuto alla risoluzione. Ci sono diversi modi per risolvere l’esercizio,   ora vi mostro una possibile soluzione.  Iniziamo col creare le variabili richieste:   prezzo_drink uguale 5 euro e 50, sarà di tipo  float. Sconto, pari a 1 euro sarà un int. Cliente   preferito uguale Giacomino sarà una stringa.  Stampiamo a schermo: Come ti chiami? E poi,   con una input, conserviamo il nome inserito dal  cliente nella variabile nome_cliente. Similmente,   chiediamo Quanti anni hai? E salviamo l’età  digitata in anni_cliente, dopo averla convertita   al volo in numero intero.. Ora, per decidere se  applicare o no lo sconto è necessario scrivere una   if. E ti dirò di più, la condizione della if sarà  formata da due sotto condizioni, perché dobbiamo   verificare che il cliente si chiami Giacomino  e che abbia più di 25 anni. Allora scrivo se   nome_cliente, equivale a cliente_preferito, ovvero  Giacomino, and se anni_cliente è maggiore di 25.   Prendiamo prezzo_drink e sottraiamo lo sconto,  tramite l’operatore unario. Ora premo invio. Il   cursore è ancora indentato, per aggiungere altre  istruzioni nella if. Ma non ne abbiamo bisogno,   quindi cancelliamo l’indentazione ed inseriamo il  comando finale: print, Il prezzo del drink è, più,   prezzo_drink convertito al volo in stringa. Ecco  fatto, l’esercizio è risolto! Se l’avete risolto   in modo differente, scrivetemelo in un commento,  sono curioso di vedere e confrontare le vostre   soluzioni. Ora torniamo alla nostra cara app. A  che punto eravamo arrivati? Beh, avevamo appena   detto al cliente se gli è consentito ordinare  solo analcolici o anche alcolici. Ora però,   vorrei definire una lista di alcolici e una  lista di analcolici disponibili nel nostro pub,   stampare le liste a schermo e consentire al  cliente di scegliere i drink desiderati.   Ma come posso creare una lista di  valori? E’ facilissimo, torniamo al   file delle spiegazioni e vediamolo insieme. Le liste sono un elemento importantissimo del   Python, e offrono una marea di funzionalità molto  utili. La lista è come una variabile, solo che la   variabile contiene un solo valore, mentre la lista  contiene tanti valori. Proviamo a creare una lista   di alcolici. Scrivo il nome della lista, alcolici,  uguale, e apro parentesi quadra. All’interno della   parentesi quadra posso inserire tutti gli elementi  che voglio, separati da una virgola. Inseriamo   alcuni alcolici a piacere, sottoforma di stringa.  Mojito virgola White Russian virgola Caipirinha.   Basta così se no ci ubriachiamo. Chiudiamo  parentesi quadra e le nostra lista è pronta!   Abbiamo creato una lista omogenea di stringhe,  ma posso inserire anche numeri interi, float,   booleani, variabili di qualsiasi tipo, insomma,  una lista può contenere tipi di dati eterogenei.   La stampiamo a schermo proprio  come stampiamo le variabili:   print, nome della lista. Avviamo il programma  e voilà ecco un bel menù coi drink della casa.   Per riferirmi ad un elemento in particolare,  scrivo il nome della lista e apro parentesi   quadre. All’interno di esse scrivo la posizione  dell’elemento che mi interessa. Il Mojito è in   posizione zero, il White Russian in posizione  uno e la Caipirinha in posizione 2. Come vedete,   si inizia a contare da zero, non da uno, non fate  questo errore. Allora, per riferirmi al Mojito,   scrivo zero e chiudo parentesi quadra. Se  inserisco questo elemento dentro una print, verrà   stampato a schermo! Avvio...ecco qua, Mojito. Come vi dicevo prima, la lista offre una marea   di funzionalità utilissime! Vediamole insieme. Posso contare quanti elementi sono presenti   nella lista, con la funzione len che sta per  lunghezza. Scrivo len, e fra parentesi tonde   inserisco il nome della lista di cui calcolare  la lunghezza. Quindi, assegno il valore ritornato   dalla funzione a una variabile che chiamo  quantità_alcolici, che poi stampo a schermo   con una print. Avviamo e...viene stampato un bel  3! Perché nella lista sono contenuti 3 elementi.   La lista, è un insieme di elementi dinamico.  Significa che posso aggiungere, eliminare e   modificare gli elementi. Per aggiungere un nuovo  elemento alla lista uso la funzione append. Scrivo   il nome della lista, punto, append e, come per  ogni funzione che si rispetti, apro le parentesi   tonde. All’interno di esse, inserisco l’elemento  che voglio aggiungere alla lista, ad esempio   Daiquiri. Bene, quindi al momento della creazione  della lista alcolici vengono aggiunti i drink   Mojito, White Russian e Caipirinha. Subito dopo  viene aggiunto il drink Daiquiri, tramite la   funzione append. Perciò se stampo alcolici e avvio  il programma….ecco qui, vedo tutti e 4 i drink! La   funzione append aggiunge l’elemento specificato  alla fine della lista. Se voglio aggiungere un   elemento all’inizio della lista, o in qualsiasi  altra posizione, posso usare la funzione insert.   Scrivo il nome della lista, punto, insert e...in  questa funzione devo specificare due valori. Il   primo valore è un numero intero, che rappresenta  la posizione in cui voglio inserire l’elemento.   Ricorda, le posizioni nelle liste si contano  iniziando da 0. Quindi se voglio inserire il   nuovo elemento all’inizio della lista, cioè in  prima posizione, scrivo 0, se voglio inserirlo   per secondo scrivo 1, per terzo scrivo 2 e così  via. Poi inseriamo una virgola e specifichiamo   il secondo valore, che è l’elemento da inserire in  lista, ad esempio il drink “Martini”. Benissimo,   se ora avviamo il programma...ecco, il  Martini è stato aggiunto in prima posizione,   e tutti gli altri elementi sono scalati. Posso anche eliminare un elemento dalla lista,   utilizzando la funzione remove. Scrivo nome lista  punto remove e fra parentesi il nome dell’elemento   da eliminare, ad esempio White Russian. Avviamo  il programma...ecco, ora la lista contiene solo   Mojito e Caipirinha. Alternativamente posso  eliminare un elemento specificando non il suo   nome, ma la sua posizione, grazie alla funzione  pop. Scrivo alcolici punto pop e...il White   Russian e alla posizione uno, quindi scrivo 1.  Avviamo...perfetto, il risultato è lo stesso.   Oltre che aggiungere ed eliminare, posso anche  modificare un elemento. Ad esempio, per modificare   il drink Caipirinha scrivo alcolici e tra quadre  scrivo 2. Uguale, e ora specifico il nuovo nome   dell’elemento 2. Caipiroska ad esempio. Avviamo  ed ecco che Caipirinha è diventata Caipiroska!   Ora vi mostro una funzione molto utile  che serve per riordinare gli elementi di   una lista. Immaginiamo di voler stampare un bel  menù dei drink in ordine alfabetico. Attualmente   gli elementi sono disordinati...potrei ordinarli  manualmente, ma posso farlo in automatico con la   funzione sort. Scrivo alcolici punto sort, avvio  e voilà, i drink sono ora in ordine alfabetico.   Possiamo anche concatenare due liste.  Immaginiamo di voler creare un menù di drink,   che contiene sia alcolici che analcolici. Ho  già definito gli alcolici, quindi definiamo   anche gli analcolici. Alcolici, uguale, aperta  quadra, Limonata virgola Gazosa, chiusa quadra.   Ora creiamo la lista menù_drink e uniamo le due  liste grazie all'operatore di concatenazione.   Così menù_drink conterrà sia i drink alcolici  che i drink analcolici! Stampiamola ed ecco quà,   tutti i drink riuniti in un ghiottissimo menù. Posso usare le liste anche in congiunzione con   la dichiarazione if! La dichiarazione if  offre una funzionalità molto bella per   controllare se un dato elemento è presente in  una lista. Ad esempio posso scrivere if Mojito   in alcolici per verificare se questo drink  è presente nella lista. In caso affermativo   posso stampare “La bevanda è disponibile!”.  Se avvio il programma....ecco che appare il   messaggio! Se torno al codice e scrivo il nome di  un drink che non esiste...ecco, niente messaggio.   Bene, ora che abbiamo appreso le tante belle  funzionalità offerte dalle liste, proviamo ad   utilizzarle per ciò che ci interessa. Volevamo  elencare al cliente i drink offerti nel nostro   pub, ricordi? Allora scriviamo "Ecco i drink  alcolici disponibili:" e poi stampiamo tutti gli   elementi della lista alcolici, uno dopo l’altro.  Come si fa? Beh abbiamo imparato che è sufficiente   scrivere print alcolici ecco. Se però provo ad  avviare...la lista viene stampata con le quadre,   gli apici, le virgole, non è molto carina da  vedere, e sarebbe meglio stampare i drink uno alla   volta, riga per riga. Beh, ma abbiamo imparato che  possiamo stampare un solo elemento della lista,   scrivendo alcolici e, tra quadre, il numero  dell’elemento. Iniziamo dallo 0. Ora aggiungiamo   una print con gli altri due elementi. Se avvio il  programma….funziona, ora viene stampato un elenco   bello ordinato e comprensibile. Ma torniamo  al codice. Per stampare questo elenco abbiamo   ripetuto la stessa print per 3 volte. ARGOMENTO: Principi di programmazione   Ogni volta che vi capita di scrivere del  codice in modo ripetitivo, vi deve subito   balzare a mente una domanda: esiste un modo più  semplice, più breve e meno ripetitivo per fare   ciò che sto facendo? Dopotutto la programmazione  in se è nata proprio per risolvere task lunghi e   ripetitivi, e infatti esiste un principio di  programmazione importantissimo che si chiama   DRY. DRY sta per Don’t Repeat Yourself, ovvero non  ripeterti! Un’altro principio che mi piace molto è   il KISS: Keep It Simple Stupid, ovvero mantieni il  codice semplice, stupido! Questo principio serve   per ricordarci, con tono abbastanza irriverente,  che dobbiamo evitare inutili complicazioni quando   scriviamo codice. Di principi di programmazione  ne esistono tanti altri e sono molto utili da   tenere a mente, perciò vi invito ad esplorarli.  Voglio terminare con una splendida citazione di   John Woods, storico programmatore di videogiochi,  che recita: “Scrivi del codice immaginando che   il collega che dovrà lavorarci in futuro sia  un violento psicopatico che sa dove abiti”.   Bene, quest’ultima frase ci motiva sicuramente  a scrivere del codice semplice e non ripetitivo.   Ora, qui abbiamo ripetuto una semplice print per  sole 3 volte, non è troppo grave. Ma immagina se   la lista fosse composta non da 3, ma da 10  drink, avremmo dovuto scrivere 10 print! E   immagina se cancellassimo o aggiungessimo nuovi  drink alla lista...dovremmo tornare nel punto   dove viene stampata e fare delle modifiche  complesse e scomode. Quindi voglio stampare   la lista in modo più semplice ed efficiente,  per evitare problemi e visite da parte di   psicopatici. A noi interessa stampare tutti gli  elementi della lista, che siano tanti o pochi.   Ma come possiamo estrarre uno ad uno, tutti  gli elementi di una lista, per stamparli   con una print o usarli in altri modi? Esiste un elemento fondamentale della   programmazione che fa proprio al caso nostro.  Serve per ripetere una o più righe di codice   automaticamente, e va molto d’accordo con  le liste. Signori e signore….il ciclo FOR!   Cancelliamo questo obbrobrio e conosciamolo  insieme. Prima lo scrivo e poi ve lo spiego.   For...alcolico….in….alcolici...due punti a capo  e, con indentazione, print alcolico.Noterai subito   che il ciclo for è molto leggibile! In italiano  leggiamo…per ogni...alcolico...dentro...la lista   alcolici...stampa alcolico. In pratica stiamo  dicendo al programma di estrarre ogni alcolico,   della lista alcolici e stamparlo ogni  volta con una print! E infatti questa   print verrà ripetuta automaticamente tante  volte, in questo caso 3 volte, perché gli   elementi della lista sono 3. Se aggiungiamo  altre istruzioni precedute da indentazione,   verranno anch’esse ripetute, dopo la print. Tecnicamente il ciclo for funziona così. Viene   presa in riferimento la lista alcolici. Viene  letto il primo elemento della lista e salvato   nella variabile alcolico. Quindi a questo punto  la variabile alcolico sarà pari a Mojito. Questa   variabile possiamo utilizzarla come desideriamo,  ad esempio in una print. Una volta che la print,   e le altre eventuali istruzioni indentate,  saranno state eseguite, il ciclo ricomincia.   Ora viene letto il secondo elemento della  lista e salvato nella variabile alcolico.   La variabile ha quindi cambiato valore, ora è  pari a White Russian. Le istruzioni indentate   vengono eseguite e il ciclo ricomincia. Viene  letto il terzo valore e salvato su alcolico,   che sarà ora pari a Caipirinha. Vengono eseguite  le istruzioni indentate ancora una volta. Adesso   nella lista alcolici non vi sono più elementi da  leggere, quindi il ciclo termina. Non vedo l’ora   di avviare il programma per vedere il ciclo for  in azione. Via. Wow fantastico, con poche righe   di codice viene stampato l’elenco degli alcolici. Interessante no? Invece di scrivere manualmente   una print per ciascun elemento  in lista, usiamo il ciclo for per   eseguire automaticamente una print per tutti  gli elementi in lista, non importa se sono 3   o se sono 100, li andrà a considerare tutti. La variabile alcolico si chiama variabile di   ciclo. L’ho chiamata alcolico ma potevo chiamarla,  drink, elemento o anche solo x. Ma chiamarla   alcolico, in alcolici rende tutto molto più  leggibile, no? Infatti si cerca sempre di usare   il nome della lista, al singolare, nei cicli for. Come abbiamo detto, il ciclo for ripete le   istruzioni indentate, tante volte quanti  sono gli elementi nella lista. Ma possiamo   anche interrompere il ciclo se si verifica  una condizione da noi decisa. Ad esempio,   voglio che il ciclo stampi Mojito e White Russian  ma termini prima di stampare Caipirinha. Posso   usare una dichiarazione if all’interno del ciclo  for! Prima della print inserisco, if alcolico   equivale a White Russian...break. Questo comando  serve per interrompere il ciclo. Queste modifiche   fanno sì che alla seconda ripetizione del ciclo,  quando alcolico sarà pari a White Russian,   verrà eseguito il comando break. Così il ciclo  si interromperà prima di eseguire la print   sottostante, che avrebbe stampato White Russian,  e non eseguirà nemmeno la ripetizione seguente,   relativa a Caipirinha. Se eseguiamo il  codice...ecco, la print viene eseguita solo   per Mojito. Abbiamo un comando simile al break,  che si chiama continue. Questo comando non termina   il ciclo ma termina solo la ripetizione. Perciò  alla seconda ripetizione, quando alcolico sarà   pari a White Russian, il comando continue verrà  eseguito e la ripetizione verrà terminata, senza   eseguire la print. Dopodiché il ciclo continuerà,  normalmente, con l’ultima ripetizione. Infatti,   se avviamo il programma….vediamo che l’unico  elemento non stampato è proprio White Russian.   Benissimo, abbiamo visto che il ciclo  for è un carissimo amico delle liste,   perché offre un sacco di funzionalità utili per  gestirle. Ma non si usa soltanto con le liste,   possiamo usare il ciclo for con tutti gli elementi  iterabili. Un altro elemento iterabile sono le   stringhe! Se io scrivo...per ogni lettera nella  stringa EdoBot. E stampo la variabile di ciclo,   lettera. Avviando il programma verrà eseguita  una print per ogni lettera di EdoBot!   Infine, il ciclo for, può essere utilizzato con  range di numeri. Se mi servono tutti i numeri da   1 a 18 ad esempio, scrivo per ogni numero della  funzione range, 1, virgola, 19. La funzione range   ritorna una serie di numeri, che vanno dal primo  al secondo valore specificato. Il primo valore   è incluso nella serie, il secondo è escluso.  Perciò se mi interessano i numeri da 1 a 18,   scrivo 1 19. Stampiamo la variabile  di ciclo, avviamo, ed ecco fatto!   Benissimo, dopo aver familiarizzato  per bene con le liste e col ciclo for,   siamo pronti per applicare le conoscenze  apprese alla nostra app, baristaVirtuale.   Inseriamo suuubito subito le due nuove liste,  alcolici e analcolici, beeenissimo! Ora   subito dopo aver presentato il drink speciale,  DigitalVodka, diciamo al cliente quanti alcolici   e quanti analcolici sono disponibili. Scrivo print  e dopo un carattere a capo per distanziare un po’   dal messaggio precedente scrivo “I drink alcolici  sono” più, e ricordi? Con la funzione len,   otteniamo la lunghezza della lista interessata,  ecco. Attenzione la lunghezza sarà un numero   intero, quindi per poterla concatenare la  convertiamo in stringa, così. Benissimo,   faccio similmente per gli analcolici. Ora  se avvio il programma...Yesss! Ecco i due   nuovi messaggi che mi dicono quanti alcolici e  analcolici sono presenti nelle rispettive liste.   Bene, ora dobbiamo far sì che per i clienti  minorenni siano disponibili solo drink   analcolici, mentre per i maggiorenni  sia alcolici che analcolici. Allora,   dopo aver calcolato l’età del cliente, creiamo  una lista chiamata drink_disponibili che per ora   sarà vuota. Se il cliente è maggiorenne,  dopo aver stampato questo messaggio,   aggiungiamo nella stessa if drink_disponibili  += analcolici. Ovvero, stiamo aggiungendo i   drink analcolici ai drink disponibili. Se invece  il cliente è maggiorenne aggiungiamo assegnamo   a drink_disponibili il risultato della  concatenazione delle liste analcolici e alcolici,   così tutti i drink saranno presenti nella lista  drink_disponibili. Ora come abbiamo imparato,   stampiamo tutti i drink disponibili, mediante  un bel ciclo for. Prima stampiamo “Ecco i   drink consigliati per te”...e poi….per ogni  drink_disponibile nella lista drink_disponibili,   stampa drink disponibile. Ora, per concludere,  diamo la possibilità alil cliente di scegliere un   drink, e salviamo la sua scelta nella variabile  drink_scelto. Infine, se il drink scelto dal   cliente è presente fra i drink disponibili,  stampiamo: Hai scelto, più drink_scelto,   più Buon aperitivo! Altrimenti stampiamo:  Mi dispiace, il drink, drink_scelto, non è   disponibile….con una faccina triste. Il nostro  barista virtuale è molto emotivo, devo dire!   Fantastico, ora la nostra app baristaVirtuale  è quasi terminata! Proviamo a testarla,   facendo diverse scelte! Avviamo! Inserisci il tuo anno di nascita...2005!   Sei minorenne, ecco i drink consigliati  per te: Limonata e Gazosa, perfetto! Scelgo   Gazosa….Hai scelto Gazosa, buon aperitivo! Ora  riproviamo con un’età maggiore di diciott’anni.   Avvio...1995...ecco che i drink comprendono  ora anche gli alcolici! Scelgo Mojito... buon   aperitivo, fantastico! Ora riavviamo...mettiamo  un anno...e proviamo ad inserire un drink non   presente in lista...Spritz...Mi spiace, il drink  Spritz non è disponibile...Ottimo funziona! Però   dopo questo messaggio il programma finisce. Senza  che il cliente abbia scelto un drink disponibile.   Sarebbe carino se, dopo questo messaggio, venisse  ripresentata la lista dei drink disponibili,   e il cliente possa riprovare a scegliere. Per  la precisione, torniamo al codice, voglio che   venga ripetuta tutta questa porzione di codice,  in cui vengono stampati i drink consigliati,   presa la scelta delil cliente, e stampati  i messaggi di conferma. Questa porzione   di codice dev’essere ripetuta, finché il  cliente non sceglie un drink disponibile.   Ma come possiamo ripetere una porzione di codice  finché non è soddisfatta una data condizione? E’   davvero facile, trasferiamoci sul nostro bravo  file delle spiegazioni e vediamolo insieme.   Per ripetere una o più istruzioni, finché  rimane rispettata una data condizione,   si utilizza il ciclo while che in inglese  significa finché. Facciamo un esempio. La   variabile a è uguale a uno. Ora scriviamo un  ciclo while: finché la variabile a è minore di 5,   ad esempio...due punti a capo. Con indentazione,  scriviamo una print: Tigre contro tigre. Vediamo   subito che succede provando ad avviare il  programma! Ahhhh Tigre contro tigre ehm ok mi   sono ingrippato. Il programma sta stampando  questo messaggio all’infinito! Come mai?   Blocchiamolo forzatamente e torniamo al codice. Un ciclo while si compone di tre elementi: La   parola chiave while, ovvero finché. Una condizione  da rispettare, proprio come nelle dichiarazioni   if. E infine, una o più righe di codice, precedute  da indentazione, che continueranno ad essere   stampate finché questa condizione si mantiene  vera. Quando questa condizione diventa Falsa,   il ciclo finisce. E’ per questo che Tigre  contro tigre viene stampato all’infinito.   Perché la variabile a è pari a 1. E uno è minore  di 5, quindi questa condizione è vera. E siccome   la variabile a non viene mai modificata, la  condizione sarà vera per sempre, quindi la print   verrà eseguita all’infinito. Proviamo a stampare,  dentro la print, il valore della variabile a.   Avviamo. Ecco qui, a è sempre pari a 1, come  previsto. Ora facciamo una cosa interessante. Ad   ogni ripetizione, dopo aver stampato a, aumentiamo  di uno il suo valore, ecco fatto. Avviamo,   e guarda un po! Vengono stampati i numeri da 1 a  4 e poi il ciclo si interrompe! Come mai? Torniamo   al codice e vi spiego. All’inizio del ciclo  while viene controllato se a è minore di 5. Tale   condizione è vera, perché a è pari a 1. Allora  viene eseguita la prima ripetizione del ciclo,   ovvero viene stampata a e poi viene incrementata  di 1. Quindi adesso a è pari a 2. La ripetizione   è terminata quindi si riprende dall’inizio.  Viene ricontrollata la condizione….A è ancora   minore di 5 perché è pari a 2. Quindi viene  nuovamente stampata a schermo e incrementata. Il   ciclo continuerà così finché a sarà pari a 4. La  variabile verrà stampata a schermo e incrementata   di uno arrivando a 5. Ora la condizione non sarà  più vera, quindi il ciclo terminerà. E’ per questo   che a schermo vediamo stampati i numeri da 1 a 4. Anche il ciclo while, come il ciclo for,   ha il comando continue, per interrompere  forzatamente una ripetizione, e il comando   break, per interrompere l’intero ciclo.  Facciamo un’altro esempio di ciclo while,   utilizzandolo per creare un giochino. Il  gioco consisterà in un indovinello, a cui il   cliente dovrà rispondere. Se la risposta delil  cliente sarà errata, l’indovinello continuerà   ad essere riproposto, all’infinito, finché il  cliente non indovinerà la risposta corretta.   Creiamo un ciclo infinito...scrivendo while...e  come condizione...True! Scrivendo esplicitamente   True come condizione, essa sarà sempre vera. Ciò  renderà il ciclo infinito. Ma non spaventarti,   lo termineremo noi, manualmente, col comando  break. Ora scriviamo l’indovinello: Che fa un   uccellino dentro un computer? E acquisiamo la  risposta delil cliente con la funzione input,   salvandola nella variabile risposta. Ora,  se risposta equivale a….chip!...stampiamo:   risposta esatta, e terminiamo il ciclo grazie  al comando break. Altrimenti scriviamo Ritenta   e andiamo a capo, senza break. Così il ciclo si  ripeterà, riproponendo l’indovinello. Ottimo,   proviamo ad avviare il giochino! Che fa  un uccellino dentro un computer? abbaia?   Ritenta...sostituisce la ram? Nemmeno...Fa chip?  Risposta esatta e il ciclo termina, perfetto!!   Ora, completiamo finalmente la nostra bellissima  app, baristaVirtuale, implementando il ciclo   while appena appreso. Ricordi? Volevamo  ripetere tutta questa porzione di codice,   se il cliente ordina una bevanda che non è  fra i drink disponibili. Allora inseriamo un   ciclo while infinito, ovvero con condizione sempre  True, e indentiamo tutta la porzione da ripetere.   Possiamo farlo rapidamente selezionandola e  usando lo shortcut Shift+Tab. Ecco fatto. Ora,   dato che il ciclo è di base infinito, dobbiamo  decidere come terminarlo. Molto semplice, quando   il cliente sceglierà un drink disponibile e sarà  pronto per l’aperitivo, aggiungiamo il comando   break per terminare il ciclo. Benissimo, ora la  app per il nostro fantastico pub Drink&Codici è   finalmente terminata! E’ stato un lavoro lungo  ma molto gratificante, perché abbiamo superato   un sacco di problemi, imparando tantissime nozioni  di programmazione! Dopotutto, è quello che succede   sempre, quando si intraprende la realizzazione  di un’app. Ora che è terminata la proviamo   subito insieme! Prima di tutto vi ringrazio di  cuore per aver seguito questo tutorial. L’ho   realizzato cercando di trasmettervi tutta la mia  grande passione per il mondo della programmazione,   che è un mondo davvero creativo, divertente  e ricchissimo di opportunità professionali.   Spero che le nozioni apprese in questo video  vi aiuteranno a migliorare la vostra attività   lavorativa, a portare a conseguimento i  vostri studi o a godervi appieno i vostri   hobby e progetti personali. Se il video vi  è piaciuto cliccate mi piace e commentate,   per vedere i nuovi tutorial e video di  intrattenimento, e rimanere sempre aggiornati   sul fantastico mondo della programmazione. E per concludere, sentitevi liberi di rivedere   questo tutorial ogni volta che ne avrete  bisogno. Ho diviso il video in capitoli,   trovate il sommario in descrizione.  Così se mentre programmate non ricordate   come si usano le liste o come si scrive la  dichiarazione if piuttosto che il ciclo for,   potrete andare rapidamente al punto del video  dove spiego l’argomento che vi interessa.   Ora testiamo finalmente la nostra app avviando  il programma, via! Ecco che EdoBot ci accoglie   calorosamente come sempre. Inserisci il tuo  anno di nascita, 2000...e inseriamo un drink   disponibile, Spritz. Mi dispiace, il drink Spritz  non è disponibile e viene riproposta la scelta,   fantastico!! Pepsi….RedBull...PitBull...ottimo,  la scelta viene sempre riproposta. Terminiamo   con un meritatissimo White Russian...Hai scelto  White Russian, buon aperitivo! Grazie EdoBot,   ce lo siamo proprio guadagnato! Ancora grazie per l’attenzione, ragazzi,   statemi bene e ci vediamo al prossimo video! Buona programmazione!