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...
Python inizia a contare da 0 e non da 1. Gli abbiamo chiesto quindi ottenere gl*' indici* da 2 a 7. Più avanti rivedremo il concetto e capiremo meglio perché.

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...
```python testo = 'supercalifragili' slice = testo[9:15] print(slice) #Si può ottenere lo stesso risultato specificando: slice = testo[9:] #Dal momento che dopo il ':' non c'è niente, Python prende tutta la stringa dalla posizione (indice) 9 in poi.. ````

"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...
_Don't repeat yourself._

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...
```python print('PHP è bellissimo') print('Python è bellissimo') print('JavaScript è bellissimo') print('C++ è bellissimo') print('Java è bellissimo') #Ben più ingombrante, non trovate? Immaginate, poi, se la lista fosse stata più lunga!

È 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...
È un contalettere, il quale restituisce il numero di lettere contenute in una parola richiesta all'utente

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...
```python nome = input('Inserisci il tuo nome:') print('Ciao', nome) ```

"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:

  1. Come precendentemente detto, "importiamo" random. Questo ci permetterà di usare random.choice() più avanti nel codice
  2. Definiamo una lista di piatti napoletani (slurp!!!)
  3. Chiediamo all'utente se vuole procedere con l'estrazione del piatto
  4. Se questi scrive "si", tramite la sintassi if, andiamo ad estrarre un piatto random dalla lista di cibi
  5. 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...
```python import random mete = ['Parigi', 'Napoli','Barcellona','Mosca','Antananarivo'] risposta = input('Estraggo una meta turistica?') if risposta == 'si' or risposta == 'certo': scelta = random.choice(mete) print(scelta) ```

"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:

  1. Iniziamo con il definire class, che ci serve proprio per creare un nuovo tipo di oggetto, che noi abbiamo chiamato "scatola"
  2. 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"
  3. Abbiamo creato un nuovo oggetto di tipo "scatola", chiamato "scatola1"
  4. Abbiamo poi definito la dimensione ed il contenuto di questa scatola1
  5. 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...
```python class scatola: def __init__ (self): self.dimensione = '' self.contenuto = '' scatola1 = scatola() scatola1.dimensione = 'grande' scatola1.contenuto = ['portachiavi rosso', 'portachiavi blu', 'portachiavi invisibile'] print(scatola1.dimensione) ```

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!