Impariamo a programmare: Python #3 - I primi programmi
Bentornati coders!
E benvenuti nella terza lezione del corso gratuito di programmazione in Python!
Reduci dalla scorsa lezione, nella quale ci siamo dati da fare per appropriarci degli strumenti necessari per iniziare a programmare, ora possiamo fare sul serio!
Prima di procedere in maniera pragmatica ed ordinata tra le varie funzioni di Python, oggi acquisiremo il ruolo di sommelier de codage e degusteremo quindi vari aspetti e caratteristiche di questo linguaggio, in maniera sinottica. Per i seguenti assaggi, quindi, aprite un nuovo file Python su PyCharm (o la IDE che state utilizzando) come specificato nella precedente lezione.
Diamo il via alla degustazione dei seguenti vini codici pregiati!
"Slicing"
1972
Abbiamo visto, precedentemente, che la funzione print() è in grado di mostrare messaggi a schermo. Divertiamoci ora con qualcosa di più complesso, effettuando un'operazione chiamata slicing.
testo = "supercalifragilistichespiralidoso"
slice_testo = testo[2:7]
print(slice_testo)
Abbiamo estratto le lettere dalla terza alla settima ed abbiamo chiesto di mostrarle a schermo. Il risultato dovrebbe essere "perca". Vi starete chiedendo: "come mai, se abbiamo scritto "2:7", la seconda lettera non è stata contata?". Avete già qualche idea? Vediamo insieme...
Open flap...
Nel frattempo, basandovi sull'esempio qui sopra, provate voi stessi ad estrarre la sottostringa "fragili" dalla stringa "supercalifragili".
Provateci da soli, ma se ne avete bisogno, la soluzione è qui sotto:
Open flap...
"Iteration"
DOGC - 1989
Diamo un assaggio anche ai famosi "cicli", od "iterazioni", i quali sono importanti poiché ci permettono di evitare l'inutile ripetizione di molte righe di codice.
A proposito, la regola numero 1 del coding è "DRY", sapete che vuol dire?
Open flap...
E capiremo insieme come, nelle prossime lezioni
Passiamo al pratico e scriviamo quanto segue:
linguaggi = ["PHP","Python","JavaScript", "C++", "Java"]
for x in linguaggi:
print(x + "è bellissimo")
#Fate attenzione: se non avete fatto copia/incolla, sappiate che
#"print" è "indentato", ovvero necessita di essere distanziato dal
#margine della pagina, della distanza di un "Tab". Se usate PyCharm,
#il Tab verrà messo automaticamente per voi quando andate a capo, dopo
#"linguaggi:"
Avete già provato a vederne il risultato?
Abbiamo anzitutto definito una lista, che abbiamo chiamato "linguaggi".
La nostra (mia?) intenzione è quella di mostrare a schermo il nome di ogni linguaggio, seguito da "è bellissimo".
Grazie al ciclo di for, siamo riusciti a dire a Mr.Python di ripetere l'operazione per ogni elemento della lista, anziché farlo manualmente.
Quale sarebbe stato, invece, l'approccio manuale? Provate ad indovinare, per poi confrontarvi con la soluzione:
Open flap...
È il vostro turno, adesso! Provate a modificare il codice per mostrare gli elementi ed il suffisso che più vi aggradano!
"Input"
1944
parola = input("Inserisci una parola:")
conta = 0
for x in parola:
conta += 1
print(conta)
Riuscite ad indovinare cosa compie questo semplice programmino?
Open flap...
Tramite input(), infatti, possiamo richiedere l'interazione dell'utente, così che questi possa influenzare l'output del programma.
Vi lancio una sfida:
Con le conoscenze acquisite sino ad ora, riuscite a creare un "saluta persone"?
L'output desiderato è il seguente:
Inserisci il tuo nome: (L'utente inserisce il nome "Matteo")
Ciao, Matteo
Provateci. Non è una richiesta facile, ma quantomeno fate un tentativo, considerando che negli esempi qui sopra dovreste avere tutti gli strumenti a disposizione per riuscire ad ottenere il risultato desiderato.
In caso di dramma e disperazione, ecco la soluzione:
Open flap...
"Sorting"
2000
Il sorting è un'operazione che permette di ordinare degli elementi, con un determinato criterio (classicamente, in ordine alfabetico).
lista = ["Marco","Antonietta","Giovanni","Andrea","Matteo","Simone"]
lista.sort()
for x in lista:
print(x)
La funzione qua sopra restituisce a schermo i valori della lista ordinati alfabeticamente.
Funziona anche con i numeri:
numeri = [10,32,1,3,99,7]
numeri.sort()
for x in numeri:
print(x)
"Random"
1970 - DOGC
Vi portereste mai dell'equipaggiamento da sci per un'uscita di hiking tra le montagne dell'Arizona?
Neanche io, infatti ci conviene sempre viaggiare leggeri e lasciare a casa quello che non usiamo
Python non la pensa diversamente! Per questo, per chiamare molte funzioni e metodi, avremo bisogno di inserirle nel nostro zainetto da escursione. Come? Con la sintassi import.
Preghiamo scriviamo:
import random
cibi = [
"Pasta e patate con la provola",
"Scialatielli allo scarpariello",
"Gnocchi alla Sorrentina",
"Pasta e fagioli",
"Paccheri al ragù"
]
risposta = input("Estraggo un piatto napoletano?")
if risposta == "si":
piatto = random.choice(cibi)
print(piatto)
Facciamo una breve analisi:
- Come precendentemente detto, "importiamo" random. Questo ci permetterà di usare random.choice() più avanti nel codice
- Definiamo una lista di piatti napoletani (slurp!!!)
- Chiediamo all'utente se vuole procedere con l'estrazione del piatto
- Se questi scrive "si", tramite la sintassi if, andiamo ad estrarre un piatto random dalla lista di cibi
- Mostriamo a schermo questo dato estratto randomicamente
Promemoria: questa è solo una degustazione, quindi per ora non stiamo scendendo troppo nel dettaglio. Non preoccupatevi! Affronteremo tutto questo in maniera molto specifica, nelle prossime lezioni!
È il vostro turno!
Sulla base del codice qui sopra, provate a modificare il programma per far si che scelga tra le vostre mete del mondo preferite, anzichè tra deliziose pietanze napoletane.
E se proprio vi sentite spavaldi, provate a far si che la risposta accettata non sia solo "si", ma anche "certo".
Consiglio: la sintassi da usare è or, che come saprete sta per "oppure"
La soluzione è nel flap!
Open flap...
"Class"
1967
Vi allego, per comodità, lo schema della prima lezione:
Python è un linguaggio di programmazione orientato agli oggetti!
Amen.
Ma cosa sono realmente questi fantomatici oggetti di cui vi parlo?
Osserviamone assieme un esemplare:
class scatola:
def __init__ (self):
self.dimensione = ""
self.contenuto = ""
scatola1 = scatola()
scatola1.dimensione = "piccola"
scatola1.contenuto = ["portachiavi rosso", "portachiavi blu", "portachiavi invisibile"]
print(scatola1.contenuto)
Eh?
Non preoccupatevi, andiamo per gradi:
- Iniziamo con il definire class, che ci serve proprio per creare un nuovo tipo di oggetto, che noi abbiamo chiamato "scatola"
- Successivamente definiamo quali attributi può avere il nostro oggetto. Vale a dire, le proprietà che vogliamo dare al nostro oggetto. Noi abbiamo quindi scelto "dimensione" e "contenuto"
- Abbiamo creato un nuovo oggetto di tipo "scatola", chiamato "scatola1"
- Abbiamo poi definito la dimensione ed il contenuto di questa scatola1
- Infine, mostriamo a schermo il "contenuto" di scatola1
Vi è un po' più chiaro il funzionamento degli oggetti?
Ovviamente, li rivederemo presto assieme nel dettaglio!
Nel frattempo, riuscite a cambiare la dimensione della scatola da "piccola" a "grande", e mostrare a schermo il valore della dimensione, anziché quello del contenuto?
Open flap...
Dulcis in fundo...
A fine degustazione non poteva mancare un bel Ripasso Valpolicella delle conscenze!
Python #3
Ricorderete tutto quello che abbiamo imparato oggi?
Per oggi è tutto!
Vi ringrazio, come sempre, per la vostra partecipazione. Spero che vi sia stato tutto chiaro. Ovviamente, per qualsiasi dubbio o perplessità non esistate a scrivere un commento.
Alla prossima lezione!