Author: - Post Category: Corso Python, Risorse ITA - Date:March 18, 2020

ūüáģūüáĻ ITA | Corso Python 3 – Le basi / 2020

In Italiano

Corso Python per principianti in Italiano. Il corso ha l’obbiettivo di insergare le basi della programmazione in python.

Categories: Corso Python and Risorse ITA. Tags: python and tutorial.
Corso Python Ita - Banner

ūüźćCon questo corso imparerai le nozioni base del linguaggio Python.

Non occorre avere precedente esperienza di programmazione ma soltanto una connessione internet e un computer (windows – mac – linux, e’ indifferente).

ūüĎĆQuesto e-learning gratuito e’ sicuramente per te se sei un’odierno smanettone o sogni di diventare un nerd nel futuro e durante questa quarantena hai la fortuna di restare a casa tutto il giorno non essendo infermiere, corriere, operaio, poliziotto, ecc, ecc..

‚ě°ÔłŹNella prima parte del corso installeremo un Visual Studio Code, un ambiente di sviluppo che integra al suo interno vari strumenti usati dagli sviluppatori come ad esempio un editor di testo, la riga di comando e altri strumenti per supportare la scrittura ed il debug del codice.

Poi installeremo Python e inizieremo a studiare il linguaggio a partire dalle basi.

ūü§ďIo che ti guido alla scoperta del “Pitone” mi chiamo Fabio, sono un full-stack ethical developer, vivo e lavoro in Inghilterra ma torno virtualmente in Italia per esservi vicino come posso in questa tragedia del virus covid-19.

Perche’proprio Python?

Perch√©’ √© uno dei linguaggi di programmazione definiti general-purpose, cioe’ utilizzato sia per lo sviluppo di applicazioni e siti web, sia nel settore IT per automatizzare certe task ripetitive.

E’ uno dei linguaggi di spicco nel machine lerning e intelligenza artificiale. Ragione per cui, personalmente, mi sono avvicinato e appassionato a questo linguaggio di programmazione.

Inoltre, la sintassi (cioe’ tipo la grammatica nella lingua italiana) e’ molto semplice.

Playlist Corso Python Completo

Indice Corso Python | Le Basi

‚Ź≤ Tempo Stimato¬†9 hours.

Corso Python per principianti diviso in otto video lezioni.

  1. L’ambiente di Sviluppo (Windows, Linux, Mac) # 1

    In questa fase installeremo visual studio code, alcune estensioni e Python nel computer.

  2. File Python e l’interprete – Video # 1

    Possiamo scrivere il codice Python in due modi, tramite file o nell’interprete. Vediamo come in questa fase.

  3. Le strutture dati di base in Python – Video # 1 # 2

    Qui impareremo quali sono le strutture di dati in Python e come usarle.

  4. Funzioni integrate nel linguaggio (Built-in) – Video #3

    Ci sono una vasta gamma di funzioni e metodi che Python ci offre di base senza dover installare moduli aggiuntivi. Le vedremo in questo capitolo.

  5. Strumenti di controllo del flusso – Video #4

    In questa sezione scopriremo come usare gli strumenti di controllo per prendere decisioni e eseguire codice a seconda del risultato di una o pi√ļ condizioni prestabilite.

  6. Definire Funzioni – Video #5

    Qui scopriremo come creare e usare una funzione, perché e quali sono i vantaggi.

  7. Introduzione Moduli e Libreria Standard di Python – Video #6

    Come estendere Python usando i moduli della libreria standard del linguaggio. Useremo alcuni moduli in questa sezione per familiarizzare con il loro utilizzo.

  8. Lavorare con i Moduli – Video #7

    Useremo alcuni moduli dalla libreria standard e installeremo dei moduli esterni dalla Python Package Index.

  9. Progetto Finale – Video #8

    Metteremo in pratica quello che abbiamo imparato e realizzeremo un programma divertente insieme.

Corso Python – Parte #1

Episodio #1 Corso Python – Le Basi / 2020 – Strutture dati di base

Tipi di strutture dati di base

Ci sono alcuni tipi di strutture di dati di base in Python come in altri linguaggi di programmazione.

Questi sono:

  • Stringe (strings) – semplice testo
  • Numeri (numbers) – tutti i tipi di numeri, interi, decimali e/o negativi.
  • Valori Boolean – Vero o Falso.
  • Variabili – parole usate per salvare al loro interno vari tipi di dati.
  • Liste (lists) – sequenze di elementi mutabili di vario tipo.
  • Dizionari – sequenze di elementi composti da chiave descrittiva e valore.
  • Tuples – sequenze di elementi non mutabili.

Queste tipi di strutture di base vengono usate per creare programmi nel linguaggio Python.

Stringhe

In Python come in altri linguaggi di programmazione, il semplice testo viene chiamato stringa.

Una stringa e’ per Python una sequenza di caratteri.

Si definisce una stringa mettendo il testo all’interno dei caratteri di quota, in Inglese “quotation marks”.


Una stringa di testo puo’ essere scritta in quote singole o doppie. Oppure occupare piu’ righe se scritta in quote triple.

'Corso Python per principianti'
"Corso Python per principianti"

""" 
Corso 
Python per principianti
"""

Numeri

Un’ altra struttura di base sono i numeri. Possiamo effettuare semplici operazioni matematiche o utilizzare i numeri per risolvere equazioni piu’ complesse.

 
Possiamo¬†sommare¬†numeri¬†con¬†l’operatore¬† “+”

Sottrarre¬†con¬†il¬†“-“ Dividere¬†con¬†il¬†” /”¬†

Moltiplicare¬†con¬†‘*’

Ma¬†possiamo¬†anche¬†calcolare¬†l’esponente¬†di¬†un¬†numero¬†usando “**”

5+5 # 10
5-3 # 2
3*2 # 6
2**2 # 4
6/2 # 3

I¬†numeri¬†senza¬†punti¬†decimali¬†sono¬†definiti¬†“integer”¬†mentre¬†quando¬†un¬†numero¬†ha¬†i¬†decimali¬†e’¬†chimato¬†“float” (floating¬†point¬†number).

6/2 # il risultato e' 3 (integer)
6/4 # il risultato e' 1.5 (float)

Oltre¬†alle¬†classiche¬†operazioni¬†ci¬†sono¬†gli¬†operatori¬†divisione¬†floor con il simbolo¬†“//”¬†

E¬†il¬†modulo¬† con il simbolo “%”

Il primo da come risultato soltanto il numero intero di un numero decimale.Il secondo la rimanenza di una sottrazione.

6//5 # 1 
6%4 # 2

Come nell’aritmetica alcune operazioni hanno la precedenza su altre.

  1. (..) Le operazioni tra parentesi vengono eseguite prima. 
  2. ** esponente
  3. Moltiplicazione e divisione
  4. Modulo e divisione floor 
  5. Addizione e sottrazione
5+3 * 5  # il risultato e' 5*3 = 15 +5 = 20
(5+3) * 5  # 5+3 = 8*5 = 40
5+5 * 5**2  # 5**2 = 25 *5 = 125 +5 = 130

Boolean

Un’altro¬†componente¬†di¬†base¬†sono¬†i¬†dati¬†boolean¬†che¬†equivalgono¬†a¬†vero¬†e¬†falso.

Possiamo definire un valore boolean assegnando True o False ad una variablie.

is_sick = False
is_2020 = True

I valori boolean ci torneranno utili quando inizieremo a studiare gli strumenti di controllo del flusso, le funzioni e gli oggetti.

Variabili

Le variabili sono dei nomi a cui assegniamo dei valori che vogliamo riutilizzare successivamente nel nostro programma.
Ad¬†esempio¬†possiamo¬†definire¬†una¬†variabile¬†“nome”¬†a¬†cui¬†assegnare il¬†valore¬†“Fabio”¬†che¬†in¬†questo¬†caso¬†e’¬†una¬†stringa.

Ma le variabili possono contenere ogni tipo di dato.
Definiamo¬†una¬†variabile¬†utilizzando¬†il segno uguale ‘=’¬† (the¬†assignment¬†operator).

name = "Fabio"
age = 40
job = "Full Stack Developer"
is_married = True

Una¬†variabile¬†puo’¬†iniziare¬†con¬†una¬†lettera¬†ma¬†non¬†un¬†numero¬†ed¬†√©¬†“case¬†sensitive” cioe’ significa¬†che¬†cambia in base a se scritta con¬†lettere¬†minuscole¬†o¬†maiuscole.

In questo caso le variabili come nome, age, job, is_married contengono un valore ciascuna.

La¬†variabile¬†“name”¬†contiene¬†la¬†stringa¬†Fabio.

La¬†variabile¬†“age”¬†contiene¬†il¬†numero¬†40.

La¬†variabile¬†“job”¬†contiene¬†la¬†striga¬†Full¬†stack¬†developer.

E¬†infine¬†la¬†variabile¬†“is_married”¬†contiene¬†il¬†valore¬†Boolean¬†True¬†(vero).

Prima di proseguire con le altre strutture di dati, vediamo come poter utilizzare quello che abbiamo imparato fin’ora per scrivere un programma di base.


Possiamo visualizzare Stringe, Numeri, Boolean e Variabili utilizzando la funzione print() fornita dal linguaggio Python. 

Vedremo cosa sono le funzioni in seguito, per il momento ci limiteremo ad utilizzarne alcune.


Per¬†utilizzare¬†le¬†stringe¬†e¬†numeri¬†che¬†abbiamo¬†in¬†precedenza salvato¬†all’interno¬†delle¬†variabili name,¬†age,¬†job, is_married possiamo¬†scrivere¬†la¬†seguente¬†frase.

print(nome + " ha " + str(eta) + " anni e di professione fa il " + professione)

Nel¬†precedente¬†esempio¬†abbiamo¬†introdotto¬†una¬†nuova¬†funzione¬†e¬†abbiamo¬†concatenato¬†variabili¬†e¬†stringe¬†utilizzando¬†il¬†segno¬†‘+’


Possiamo concatenare solo stringe di testo in questo modo, quindi abbiamo utilizzato la funzione Python str() per convertire la variabile age da numero (integer) a stringa (string).
Se¬†proviamo¬†a¬†concatenare¬†anche¬†l’ultima¬†variabile¬†is_married senza¬†convertirla¬†otterremo¬†un errore¬†TypeError.¬†

print(nome + " ha " + str(eta) + " anni e di professione fa il " +  professione + sposato)

TypeError: must be str, not bool

Per¬†evitare¬†l’errore¬†utilizziamo¬†la¬†funzione¬†str()¬†sulla¬†variabile¬†is_married

Il valore Boolean viene utilizzato insieme agli strumenti del controllo del flusso per far funzionare il nostro programma in un modo o in un altro a seconda di una certa condizione.

is_married = True
if is_married:
    print(name + " e' sposato.")
else:
    print(name + " deve sposarsi.")

Vedremo nel dettaglio gli strumenti di controllo dopo, ora proseguiamo con le strutture di base del linguaggio.

Corso Python – Parte #2

Corso Python 3 – Le Basi | Parte #2

Liste (Lists):

Una lista e’ una sequenza di elementi. Una lista puo’ contenere diversi elementi dello stesso tipo o di tipo diverso.

Solitamente una lista e’ composta da elementi dello stesso tipo come stringhe, numero, altre liste o altri tipi di strutture che impareremo a breve come i Tuples e Dizionari.

numeri = [10, 20, 33, 45, 12]
nomi = ["Fabio", "Serena", "Mario", "Luigi", "Elisa"]
print(nomi)

Nel¬†primo¬†esempio¬†abbiamo¬†creato¬†una¬†lista¬†di¬†numeri¬†e l’abbiamo¬†assegnata¬†alla¬†variabile¬†“numeri”¬†cosi’¬†possiamo usarla¬†dopo.

Nel¬†secondo¬†caso¬†una¬†lista¬†di¬†nomi¬†e¬†l’abbiamo¬†assegnata¬†alla¬†variabile¬†nomi.
Le liste sono sequenze di elementi e sono mutabili (possiamo cambiare i suoi elementi).
Per definire una lista includiamo gli elementi in parentesi quadre e li separiamo con una virgola.
Possiamo effettuare varie operazioni su una lista.

  1. Indexing (trovare la posizione di un elemento)
  2. Slicing (dividere una lista e ottenerne una copia)
  3. Estenderla con un’altra lista
  4. Cambiare il valore di un elemento al suo interno
  5. Aggiungere nuovi elementi o rimuoverne.
print(nomi[2:])  # slice
print(nomi[:2])  # slice
print(nomi + numeri)  # extend
nomi[3:5] = ["Carlo", "Elia", "Marco"]  # replace
print(nomi)
print(nomi[3:5])  # remove elements
nomi[:] = []  # clear the list
print(nomi)

Ci sono una serie di funzioni di base fornite dal linguaggio stesso che possiamo utilizzare per ogni tipo di dato. Mentre altre sono specifiche, relative al tipo di oggetto in questione.


La¬†funzione¬†len()¬†ad¬†esempio¬†e’¬†una¬†funzione¬†generica¬†che¬†possiamo¬†usare¬†su¬†vari¬†tipi¬†di¬†strutture¬†di¬†dati¬†come¬†stringhe¬†e¬†liste.

Mentre¬†la¬†funzione¬†append()¬†e’¬†specifica¬†delle¬†liste.
Per aggiungere un elemento alla lista possiamo usare .append()

nomi.append("Jon")
print(nomi)

La¬†funzione¬†generica¬†len()¬†e’¬†usata¬†per¬†calcolare¬†la¬†lunghezza di¬†una¬†sequenza.¬†In¬†questo¬†caso¬†se¬†applicata¬†alla¬†variabile¬†nomi¬†avremo¬†come¬†risultato¬†1¬†e¬†se¬†applicata¬†alla¬†variabile¬†name¬†il¬†risultato¬†sara’¬†5.


Ci sono molte altre funzioni che possiamo usare sulle liste come ad esempio pop() che rimuove un elemento dalla fine della lista.

names.append("Jane")
print(names)
names.pop()
print(names)

Cosi’ come ci sono molte altre operazioni che possiamo effettuare sulle liste ma queste sono le informazioni basilari pensate per il corso.

Tuples

Ci solo altre due strutture di base in Python che sono Tuples e Dictionaries.

 
Un Tuple e’ un set di elementi immutabili mentre un Dizionario (Dictionary) e’ un set di elementi con chiave descrittiva e valore associato e sono mutabili.
Definiamo un Tuple scrivendo i valori tra parentesi e separandoli con una virgola.

user_loggedin_status = ("Fabio", True)
print(user_loggedin_status)

name, surname, age, status = ("Fabio", "Pacifici", 40, True)
print(name, surname, age, status)

Possiamo assegnare un tuple ad una singola variabile o a molteplici variabili che rappresentano ciascuno dei valori del Tuple.
Un¬†Tuple¬†ha¬†due¬†funzioni¬†di¬†base¬†fornite¬†dal¬†linguaggio Index(value)¬†e¬†Count(value)¬†che¬†rispettivamente¬†trovano¬†l’indice¬†di¬†un¬†valore¬†e¬†contano¬†il¬†numero¬†di¬†volte¬†che¬†un¬†elemento¬†e’¬†contenuto¬†nel¬†Tuple.

print(user_loggedin_status.index(True))  # returns 1
print(user_loggedin_status.count("Fabio"))  # returns 1

Dizionari

Come le parole nel dizionario, un dizionario e’ una delle strutture dati in Python e si differenzia dagli altri per via della sua struttura composta da una chiave (la parola del dizionario) e un valore (la definizione della parola nel dizionario).

Per definire un dizionario utilizziamo le parentesi graffe e separiamo la chiave dal valore con i due punti.

Un dizionario contiene vari elementi ed ognuno e’ separato da una virgola.

user = {

    "username": "Fabio",
    "age": 40,
    "profession": "Developer"

}

print(user)

A sinistra c’e’ la chiave ( “key” in Inglese) mentre a destra il valore (o “value”). 
Possiamo accedere al valore di un elemento usando la variabile che contiene il dizionario seguita dalla chiave contenuta in parentesi quadre.

print(user["username"])
print(user["age"])

Possiamo aggiungere, assegnare nuovi valori ad ogni elemento del nostro dizionario e possiamo rimuoverli.

Possiamo¬†anche¬†verificare se¬†una¬†specifica¬†chiave¬†e’¬†presente¬†all’interno¬†del¬†nostro¬†dizionario¬†usando¬†la¬†parola chiave¬† “in”

# Creare un dizionario    
prefix = {'Italy' : 0039, 'UK':0044, 'Netherland': 0040}

# aggiungere elementi
prefix['Germany'] = 0042

# cambiare valori
prefix['Germany'] = 0043

# rimuovere valori
del prefix['Germany']

# Verificare se una chiave é nel dizionario
print("Italy" in prefix)

Come abbiamo visto nel primo esempio, definiamo il nostro dizionario (dictionary) assegnando un valore a delle chiavi. 
Poi possiamo aggiungere un elemento usando le parentesi quadre e scrivendo al loro interno la chiave che vogliamo aggiungere seguita del segno uguale e dal valore.
Se la chiave esiste gi√° con la stessa sintassi possiamo aggiornare il suo valore ed assegnarne un altro.


Usiamo¬†nell’esempio¬†successivo¬†la¬†parola¬†chiave¬†“del”¬†seguita¬†dalla¬†variabile che¬†contiene¬†il¬†dizionario¬†e¬†tra¬†parentesi¬†quadre¬†la¬†chiave¬†che¬†vogliamo¬†cancellare.
Infine¬†possiamo¬†verificare¬†se¬†una¬†chiave¬†√©¬†presente¬†nel¬†dizionario¬†usando¬†la¬†parola¬†chiave¬†“in”¬†preceduta¬†dalla¬†chiave; e successivamente¬†alla¬†parola chiave¬†la¬†variabile¬†che¬†contiene¬†il¬†dizionario.

Funzioni del Dizionario:

Ci sono una serie di funzioni di base che sono disponibili per la struttura dati del Dizionario. 


In¬†visual¬†studio¬†code,¬†se¬†fate¬†seguire¬†al¬†dizionario¬†un¬†punto noterete che¬†verranno¬†elencati¬†in¬†un¬†menu’¬†una¬†serie¬†di¬†opzioni¬†tra¬†cui¬†scegliere.
Tra¬†queste,¬†pop(),¬†update(),¬†setdefault(),¬†clear(),¬†get(),¬†copy(). Ma¬†ce¬†ne¬†sono¬†altre e potrete¬†consultare¬†la¬†documentazione¬†Python¬†successivamente¬†per saperne¬†di¬†pi√ļ.

Rimuovere un elemento del dizionario con pop():

Il metodo pop() rimuove un elemento dal dizionario specificando la chiave da rimuovere.

prefix.pop("UK")
print(prefix)

Clear() rimuove tutti gli elementi dal dizionario:

prefix.clear()
print(prefix)

Il metodo setdetault():

Assegna un valore di base ad una nuova chiave che aggiunge al dizionario. Se la chiave non esiste la aggiunge. Mentre se invece esiste, quando eseguiamo il codice otteniamo il dizionario con il valore assegnato di base in precedenza.
Nel precedente esempio abbiamo cancellato tutti i valori del dizionario usando il metodo clear. 

Ora¬†usiamo¬†il¬†metodo¬†“setdefault()”¬†per¬†creare¬†un¬†nuovo¬†elemento.

prefix.setdefault("Spain", 38)
print(prefix)

Eseguendo il codice possiamo notare che la nostra nuova chiave “Spain” √© stata inserita nel dizionario con il valore di default che √© 38.

prefix.setdefault("Spain")
print(prefix)

Fin’ora avete gi√° imparato molto, bravi! 

Tuttavia, abbiamo appena iniziato a scalfire la superficie delle strutture dati e cosa possiamo farci. Lo approfondiremo nei prossimi episodi. 

Per concludere questo capitolo:

C’√©¬†un¬†altra¬†funzione¬†fornita¬†dal¬†linguaggio¬†che¬†voglio¬†mostrarvi,¬†√©¬†la¬†funzione¬†type().

Usando questo metodo possiamo determinare il tipo di struttura dati che abbiamo davanti. 

name = "Fabio"
print(type("Fabio"))
print(type(name))

Possiamo usarla con ciascuno tipo di dato che abbiamo studiato fin’ora. 

# numeri:
number = 9
print(type(number))

# valori boolean:

is_monday = False
print(type(is_monday))

# Liste:
countries = ["Italy", "Spain", "Netherlands", "UK"]
print(type(countries))

# Dizionari:
user_ranks = {"Fabio": 100, "Serena":100, "Luigi": 90, "Stefano": 70, "Moreno": 95}
print(type(user_ranks))

Prima di passare al capitolo successivo dove vedremo cos’e’ una funzione e come crearla, capiamo cosa sono le comparazioni e a cosa servono.


In Python e in molti altri linguaggi di programmazione, cosi’ come nella matematica, abbiamo la possibilit√° di confrontare due valori.

  1. maggiore di >
  2. minore di <
  3. uguale a == 
  4. diverso da !=
  5. minore o uguale <=
  6. maggiore o uguale >=

L’utilizzo di questi operatori, da come risultato un valore Boolean Vero o Falso.

Avviamo il nostro interprete Python e vediamo come funziona.

10 > 1 # True (Vero)
1 < 10 # True (Vero)
10 < 1 # False
1 > 10 # False

3 == 6 # False
3 != 6 # True

20 >= 19 # True
8 <= 30 # True

Questo ci torner√° particolarmente utile successivamente con gli strumenti di controllo del flusso di codice nel quale a seconda di un certo risultato il nostro programma eseguir√° un azione piuttosto che un’altra.

Possiamo¬†eseguire¬†dei¬†controlli¬†su¬†pi√ļ¬†condizioni¬†usandogli¬†operatori¬†and¬†or¬†e¬†not¬†(e,¬†o,¬†non).

Vi lascio un’anteprima di come utilizzarli:

work_age = 18
age = 18
pension_age = 75
name = "Mario"

if age <= work_age:
    print(name + " ha " + str(age) + " anni e deve studiare")
elif age > work_age and not age >= pension_age:
    years_to_retirement = pension_age - age
    print(name + " ha " + str(age) +
          " anni e lavora. L'eta pensionistica é di " + str(pension_age) + ". Gli mancano " + str(years_to_retirement) + " anni alla pensione.")
elif age > work_age and age >= pension_age:
    print(name + " é in pensione.")

Se siete arrivati fin qui, complimenti!

Abbiamo gi√° imparato molte cose e nei video successivi impareremo molto altro.

Fermatevi un po, riguardate questo episodio e quello precedente per essere sicuri di aver capito tutto e soprattutto completate questi 5 esercizi.

Istruzioni Esercizi di Fine Episodio #2

  1. Scrivete una lista che contiene al suo interno una serie di numeri a caso e salvatela nella variabile “i miei numeri”. 
  2. Scrivete un dizionario che contiene al suo interno i nomi di amici o  familiari come chiavi e la loro et√° come valori e salvatela nella variabile “famiglia”.
  3. Scrivete una variabile chiamata nome ed assegnategli il vostro nome.
  4. Effettuate le seguenti operazioni matematiche nell’interprete:
    1. Moltiplicate 10 per 50 dividete il risultato per 5 e aggiungete 3 al risultato.
    2. Sommate 4, 9, 399 moltiplicate il risultato per 10 e dividete per 4
    3. quanto f√° 10 alla sesta?
    4. E’ 99 maggiore di 4 ?
    5. Qual’ √© il risultato della seguente operazione 9%3? e di 9//3?
    6. Usate la funzione print() per stampare:
    1. la variabile nome
    2. la variabile i miei numeri
    3. la variabile famiglia
    4. il risultato di ogni operazione dell’esercizio 4.

Se avete qualche difficolt√°, riguardatevi le puntate e scrivetemi nei commenti del video cosi’ vi aiuto.

Ricordate che: 


1.Una stringa √© semplice testo tra quote singole o doppie.    
2.Un numero si scrive senza quote.    
3.Una variabile √© una parola a cui assegniamo un valore usando il simbolo uguale.   
4.Una lista si scrive tra parentesi quadre e gli elementi sono separati da virgole.
5.Un dizionario si scrive tra parentesi graffe, la chiave e il valore sono separati dai due punti e ogni elemento da una virgola.

Corso Python – Parte #3

In questo episodio #3 inizieremo a studiare le funzioni integrate nel linguaggio. Nel precedente video vi avevo chiesto di completare a casa 5 esercizi che ora faremo insieme.

Esercizi:

# 1:
i_miei_numeri = [10, 9, 5, 4,1]

# 2:
famiglia = {"Serena": 38, "Fabio":40, "Marco:"48", "Giovanni":44}

# 3:
nome = "Fabio"

# 4:
    - moltiplicate 10 per 50 dividete il risultato per 5 e aggiungete 3 al risultato.
    ```
    10*5/5+3
    ```
    - sommate 4, 9, 399 moltiplicate il risultato per 10 e dividete per 4
    ```
    (4+9+399) * 10 / 4
    ```
    - quanto f√° 10 alla sesta?
    10**6
    - é 99 maggiore di 4
    99 > 4
    - quale é il risultato della seguente operazione 9%3? e 9//3?
    9%3
    9//3
#5:
    print(i_miei_numeri)
    print(famiglia)
    print(name)
    print(10*5/5+3)
    print((4+9+399) * 10 / 4)
    print(10**6)
    print(99 > 4)
    print(9%3, 9//3)

Ok, perfetto! Non era difficile.

Ora passiamo alle funzioni fornite di base dal linguaggio Python, chiamate built-in functions.

Alcune funzione le abbiamo giá viste nei due video precedenti, tipo str(), len(), print(), type(). 

La¬†prima¬†funzione¬†che¬†vedremo¬†√©¬†quella¬†che¬†finora¬†abbiamo¬†usato¬†di¬†pi√ļ all’interno¬†del¬†nostro¬†file¬†Python.¬†La¬†funzione¬†print()¬†ci¬†permette¬†di visualizzare¬†i¬†valori¬†che¬†otteniamo¬†dal¬†nostro¬†programma¬†scritto¬†in¬†Python.

La funzione print():

print("Fabio") # il risultato é la stringa di testo Fabio
print(40) # il numero 40
print(4>1) # il risultato della condizione 4 maggiore di 1
print(5*5) # il risultato dell'opearazione 5*5 

La funzione print() é essenziale per visualizzare i rusultati del nostro programma. Molte delle funzioni che vedremo a breve le useremo in combinazione con questa.
Alla¬†funzione¬†print()¬†possiamo¬†passare¬†pi√ļ¬†elementi,¬†il¬†risultato¬†verra’¬†separato¬†da¬†uno¬†spazio print(a,b,c)

La funzione type(): 

Grazie¬†alla¬†funzione¬†type()¬†possiamo¬†ottenere¬†informazioni¬†sul¬†tipo¬†di¬†struttura¬†di¬†dati¬†che¬†abbiamo¬†e¬†verificarne¬†l’attuale¬†conversione.

print(type(40)) # int
print(type(40.5)) # float
print(type("Fabio")) # str
print(type(4>1)) # bool
print(type([1,4,5])) # list
print(type({"Fabio": "castano", "Sere":"bionda"})) # dict

La funzione str():

La funzione str() converte differenti tipi di struttura dati in una stringa.

str(40) # concerte il numero integer 40 in stringa
str(4>1) # converte il risultato della condizione in stringa
str([1,5,6]) # converte la lista [1,5,6] in stringa.
str({"Fabio": "castano", "Sere":"bionda"})  # converte il dizionario in stringa 

Ma solo usandola in combinazione con print() possiamo vederne il risultato.

print(str(40))
print(str(4>1))
print(str([1,5,6]))
print(str({"Fabio": 40, "Sere":38}))

Usandola in combinazione anche con la funzione type() possiamo vedere che il tipo di dati cambia in una stringa.

print(type(40), type(str(40))) # int, str
print(type(40.5), type(str(40.5))) # float, str

print(type(4>1), type(str(40>1))) # bool, str
print(type([1,4,5]), type(str([1,4,5]))) # list, str
print(type({"Fabio": 40, "Sere":38}), type(str({"Fabio": 40, "Sere":38}))) # dict, str

Come¬†la¬†funzione¬†str,¬†ci¬†sono¬†funzioni¬†similari¬†per¬†ciascuno¬†dei¬†tipi¬†di¬†dato¬†che¬†abbiamo¬†studiato,¬†che¬†fanno¬†esattamente¬†la¬†stessa¬†cosa convertendo¬†un¬†tipo¬†di¬†dati¬†in¬†un’altro.

int(), float(), list(), dict(), tuple().

La funzione help():

Per¬†saperne¬†di¬†pi√ļ¬†su¬†una¬†determinata¬†funzione¬†possiamo¬†invocare la¬†sua¬†documentazione¬†utilizzando¬†la¬†funzione¬†help().

help(str)
help(int)
help(float)
help(list)
help(dict)
help(tuple)

Ciascuna¬†di¬†queste¬†aprir√°¬†nel¬†terminale¬†la¬†documentazione¬†specifica della¬†funzione.¬†Possiamo¬†uscire¬†dalla¬†documentazione¬†premendo¬†il¬†tasto¬†“q”

La funzione len():

len ci permette di ottenere un valore numerico che indica gli elementi di una sequenza. Possiamo usarlo su ciascun tipo di sequenza.

print(len("Fabio")) # 5
print(len([1,3,5,6])) # 4
print(len({"Fabio": "Developer", "Serena":"Writer"})) # 2

La funzione input():

Tramite¬†la¬†funzione¬†input()¬†possiamo¬†rendere¬†il¬†nostro¬†programma¬†interattivo ed¬†interaggire¬†con¬†l’utente.¬†Questa¬†funzione¬†attende¬†che¬†l’utente¬†inserisca¬†un¬†valore¬†e¬†poi¬†proseguecon¬†l’esecuzione¬†del¬†nostro¬†programma.¬†

input("Inserisci il tuo nome.. ")

la¬†funzione¬†input¬†√©¬†molto¬†utile,¬†se¬†salviamo¬†il¬†suo¬†risultato¬†inuna¬†variabile¬†come¬†possaimo¬†usare¬†il¬†valore¬†fornito¬†dall’utentenel¬†nostro¬†programma.

nome = input("Inserisci il tuo nome.. ")
print("Ciao", nome+"!")

La funzione abs():

Questa funzione applicata ad un numero negativo da come risultato il valore assoluto, che √© sempre un numero positivo.

numero_negativo = -10
print(abs(numero_negativo))

La funzione sum():

Questa funzione ci permette di sommare tutti i numeri di una sequenza in modo progressivo.

print(sum([1, 4, 5, 6, 6]))print(sum(range(15)))

Nel primo esempio abbiamo passato alla funzione sum una sequenzadi numeri tramite una lista. 1+4+5+6+6 = 22
Nel¬†secondo¬†esempio¬†abbiamo¬†combinato¬†la¬†funzione¬†sum¬†con¬†un’altrafunzione¬†che¬†vedremo¬†pi√ļ¬†avanti¬†che¬†√©¬†la¬†funzione¬†range()¬†che¬†da¬†come¬†risultato¬†un¬†oggetto¬†che¬†contiene¬†una¬†sequenza¬†di¬†numeri¬†interi.

Le funzioni max() e min():

print(max([1, 4, 5, 6, 7]))
print(min([1, 4, 5, 6, 7]))

Queste sono solo alcune delle funzioni di base, la lista completa la trovate nella documentazione python. Vi lasci il link nella descrizionedel video.

Lista Funzioni: https://docs.python.org/3/library/functions.html

E’ tutto per questo episodio. Prima di passare al video successivo, fate pratica con le funzioni che abbiamo appena studiato.
Se vi trovate in difficolt√° o non avete capito qualcosa, riguardate il video o lasciate un commento e vi rispondero’ come possibile. 
Mi auguro che abbiate trovato questi video interessanti, se vi sono piaciuti mettete un like cosi’ capisco che avete apprezzato.

Nel prossimo video inizieremo ad usare gli strumenti di controllo del flusso.

Corso Python – Parte #4

Iniziamo con la quarta parte, gli strumenti di controllo cioe’:

  1. While Loop
  2. For Loop
  3. If/else statements
  4. Break and Continue

While Loop:

Il loop while é uno degli strumenti di controllo ed é molto efficace. Grazie ad esso possiamo sviluppare programmi complessi ed automatizzareoperazioni ripetitive.
Questo¬†strumento¬†utilizza¬†una¬†condizione¬†ed¬†esegue¬†il¬†codice¬†contenuto al¬†suo¬†interno¬†“finch√©”(while)¬†la¬†condizione¬†√©¬†Vera.


Ad esempio

x = 0
while x < 10:
    print(x)
    x += 1

Nell’esempio qui sopra abbiamo: 

  1. Inizializzato la varabile x a cui abbiamo assegnato il valore 0
  2. Avviato il loop scrivendo la parola chiave while    
  3. Definito la nostra condizione x < 10    
  4. La¬†riga¬†finisce¬†con¬†i¬†due¬†punti¬†“:”. ¬†¬†

All interno del corpo del nostro loop:

  1. Il corpo del loop deve essere indentato a destra con lo stesso  numero di spazi o tab.    
  2. Scriviamo il codice che vogliamo eseguire.    
  3. Incrementiamo la variabile che abbiamo inizializzato.

Il codice nel corpo del loop viene eseguito ciclicamente finche la condizione non cambia.

Al primo giro, la variabile che abbiamo inizializzato é 0 quindi minore di 10, pertanto stamperemo il numero 0. Poi incrementiamo la variabile di uno. 
Al giro successivo la variabile x é 1 che é ancora minore di 10, quindi stampiamo uno e incrementiamo la variabile di uno e cosi via.

Finche’¬†la¬†variabile¬†non¬†diventa¬†10¬†che¬†non¬†√©¬†minore¬†di¬†10¬†pertanto il¬†loop¬†si¬†ferma¬†e¬†cosi¬†il¬†nostro¬†codice.¬†

x = 10
while x < 100:
    print(x)
    x += 10
else:
    print("End")

In¬†questo¬†esempio¬†invece,¬†utilizziamo¬†un¬†altra¬†parola¬†chiave¬†“else”che¬†esegue¬†il¬†codice¬†contenuto¬†al¬†suo¬†interno¬†quando¬†la¬†nostra¬†condizione¬†diventa¬†falsa. Come¬†vedete¬†possiamo¬†incrementare¬†la¬†variabile¬†a¬†piacere.


!!Attenzione!! Bisogna fare attenzione ad inizializzare la nostra variabile e cambiare il suo valore all’interno del loop per evitare un loop infinito.

x = 10
while x < 100:
    print(x)
 
else:
    print("End")

In¬†questo¬†caso¬†il¬†codice¬†all’interno¬†del¬†nostro¬†loop¬†verra’¬†eseguito all’infinito¬†poich√©¬†x¬†√©¬†sempre¬†10¬†e¬†la¬†nostra¬†condizione¬†non¬†diventa¬†mai falsa¬†e¬†quindi¬†anche¬†il¬†codice¬†all’interno¬†dell’else¬†statement non¬†viene¬†mai¬†eseguito.

For Loop:

Un’altro¬†strumento¬†di¬†controllo¬†√©¬†il¬†for¬†loop.¬†
Possiamo¬†usare¬†questo¬†strumento¬†con¬†i¬†tipi¬†di¬†dato¬†sequenziali¬†che¬†abbiamovisto¬†fin’ora,¬†come¬†le¬†stringe –¬†liste – dizionari – tuples o¬†usando ¬†la¬†funzione¬†range()¬†che¬†da come¬†risultato¬†una¬†sequenza¬†di numeri¬†interi.

# con le stringe:
for lettera in "Fabio":
    print(lettera)
# Con le liste:
for numero in [10, 6, 6, 3, 6, 2, 2]:
    print(numero)
for x in range(10)
    print(x)
for nome in ["Fabio", "Serena", "Mario", "Luigi"]:
    print(nome)
# Con i Dizionari:
users = {"Fabio": 40, "Serena": 38, "Mario": 100, "Liugi": 100}

for name, age in users.items():
    print(name, age)

for name in users.keys():
    print(name)

for age in users.values():
    print(age)

Con i dizionari possiamo utilizzare due dei metodi specifici di questo tipo di dati per visualizzare le chiavi, i valori o entrambe.

Anche¬†con¬†il¬†for¬†loop¬†possiamo¬†usare¬†la¬†parola¬†chiave¬†else¬†che eseguira’¬†il¬†codice¬†all’interno¬†del¬†suo¬†corpo¬†una¬†volta¬†che¬†il¬†loop¬†ha¬†completato¬†la¬†sequenza.

for name, age in users.items():
    print(name, age)
else:
    print("Finito")

if/elif/else statement:

Questo strumento viene usato moltissimo, anche in combinazione con i precedenti per verificare quando una certa condizione é vera o falsa ed eseguire un blocco di codice a seconda delle circostanze.
Questo¬†strumento¬†viene¬†definito¬†usando¬†la¬†parola¬†chiave¬†“if”¬†insieme alle¬†parole¬†chiave¬†“elif”¬†ed¬†“else”.


Le¬†parole¬†chiave¬†“if”¬†ed¬†“elif”¬†sono¬†seguite¬†da¬†una¬†condizione¬†da¬†verificare,¬†se¬†questa¬†√©¬†vera¬†allora¬†il¬†codice¬†al¬†suo¬†interno¬†viene¬†eseguito. Altrimenti¬†l’esecuzione¬†passa¬†al¬†blocco¬†successivo¬†se¬†presente,¬†l’elif. Se¬†la¬†condizione¬†√©¬†falsa¬†il¬†codice¬†all’interno¬†della¬†parola¬†chiave¬†“else” viene¬†eseguito.

nome = str(input("Inserisci il tuo nome: ")).lower()
admin = "fabio"
manager = "serena"
if nome == admin:
    print("Ciao", nome, "Sei L'Amministratore!")

elif nome == manager:
    print("Ciao", manager, "Hai accesso al sistema come manager.")

else:
    print("Spiacente, non puoi accedere al sistema.")

In¬†questo¬†esempio¬†abbiamo¬†definito¬†due¬†variabili¬†che¬†poi abbiamo¬†confrontato¬†e¬†usato¬†con¬†le¬†parole¬†chiave¬†“if”¬†ed¬†“elif”¬†ed¬†“else”.

Break e Continue:

Le¬†parole¬†chiave¬†break¬†e¬†continue¬†vengono¬†usate¬†per¬†indicare al¬†nostro¬†programma¬†di¬†interrompere¬†l’esecuzione¬†o¬†continuare al¬†prossimo¬†passaggio¬†a¬†seconda¬†delle¬†esigenze.

for x in range(100):
if x % 10 == 0:
    continue

if x > 75:
    print(x)
    break
else:
    print(x)

In¬†questo¬†esempio,¬†ogni¬†volta¬†che¬†incontriamo¬†un¬†numero¬†multiplo¬†di¬†10, lo¬†saltiamo¬†e¬†passiamo¬†a¬†quello¬†successivo¬†grazie¬†alla¬†parola chiave¬†“continue“.

Mentre¬†quando¬†il¬†nostro¬†numero¬†√©¬†maggiore¬†di¬†75¬†interrompiamo l’esecuzione¬†del¬†codice¬†grazie¬†alla¬†parola¬†chiave¬†“break“.

La parola chiave “pass”:

Per concludere la parola chiave pass, non fa nulla. Essenzialmente viene usata per indicare che uno strumento di controllo – una funzione – una classe, sono stati definiti ma non ancora implementati.

x = 0
while x < 10:
    pass

if x in range(10):
    pass

names = ["Fabio", "Serena", "Mario", "Marco"]
for name in names:
    pass

Nel prossimo video studieremo come definire ed usare una funzione. 

Nel frattempo fate pratica con gli strumenti che abbiamo visto fin ora e se qualcosa non vi √© chiaro riguardate i video precedenti.

Corso Python – Parte #5 | Le Funzioni

ūüďĆ Nel quinto episodio studiamo le Funzioni:

  1. Cosa sono le funzioni
  2. Come definire una funzione
  3. Come usare una funzione
  4. Alcuni esempi di funzione
  5. Funzioni, strumenti di controllo e strutture dati di base.

Cosa é una funzione?

Una funzione √© un blocco di codice che viene definito per effettuare una determinata azione che viene ripetuta all’interno del nostro programma.

Perch√© creare una funzione?

Definiamo una funzione per organizzare e riusare parti del nostro programma in modo che queste siano create una sola volta e poi riutilizzate.

Fin ora abbiamo usato molte volte alcune delle funzioni integrate nel linguaggio come ad esempio la funzione print().

Come definire una funzione?

Per definire una nostra funzione utilizziamo  una sintassi specifica, simile a quella usata per gli strumenti di controllo.

  1. Prima usiamo la¬†parola¬†chiave¬†“def”, che sta¬†per¬†define¬†o¬†definire¬†in¬†italiano.
  2. seguita dal nome che vogliamo assegnare alla nostra funzione
  3. e¬†da¬†un¬†paio¬†di¬†parentesi¬†tonde,¬†al¬†cui¬†interno¬†possiamo¬†indicare¬†degli¬†¬†¬†¬†¬†argomenti¬†che¬†poi¬†possiamo¬†usare¬†all’interno¬†della¬†nostra¬†funzione.
  4. dopo¬†le¬†parentesi¬†la¬†righa¬†si¬†chiude¬†con¬†i¬†due¬†punti¬†:”¬†
  5. il copro vero e proprio della funzione lo scriviamo nella successive righe e lo indentantiamo versio destra come per gli strumenti di controllo del flusso.

Prima di passare ad un esempio pratico, un argomento √© un valore (simile ad una variabile) che definiamo tra le parentesi della nostra funzione e che sar√° disponibile solo all’interno del corpo della funzione.

Quando poi invochiamo una funzione dobbiamo passare dei valori da attribuire ai suoi argomenti in caso questi non siano opzionali. I parametri possono essere di due tipi:

  1. argomenti posizionali
  2. argomenti a parola chiave

Prendiamo il sequente codice

anno = 2020
fabio_data_di_nascita = 1980
eta_fabio = anno - fabio_data_di_nascita

serena_data_di_nascita = 1982
eta_serena = anno - serena_data_di_nascita

mario_data_di_nascita = 1989
eta_mario = anno - mario_data_di_nascita

print(eta_fabio, eta_serena, eta_mario)

Possiamo ottimizzare questo blocco di codice creado una funzione.

Ripetiamo Come creare una funzione: Per definire una funzione usiamo la parola chiave “def” seguita dalnome che vogliamo dare alla funzione, seguito da due parentesi tondeal cui interno possiamo definire degli argomenti o anche parametri che useremonel corpo della funzione. dopo le parentesi tonde la righa finisce con i due punti.
Il corpo della funzione √© indentato verso destra.

def calcAge(yob, name):
    year = 2020
    age = year - yob
    print(name, "ha", age, "anni")


calcAge(1950, "Mario")
calcAge(1800, "Luigi")

La funzione qui sopra possiamo anche scriverla utilizzando uno dei moduli della libreria python (che studieremo nel prossimo episodio)  per ottenere l’anno corrente in modo dinamico invece che scriverlo manualmente.

La nuova funzione sar√° quindi la seguente:

import datetime

def calcAge(yob, name):
    year = datetime.datetime.now().year
    age = year - yob
    print(name, "ha", age, "anni")


calcAge(1950, "Mario")
calcAge(1800, "Luigi")

In¬†questo¬†esempio¬†abbiamo¬†usato¬†la¬†funzione¬†print()¬†all’interno¬†della¬†nostra¬†funzione, ma¬†comunemente¬†utilizzeremo¬†la¬†parola¬†chiave¬†retrun¬†per¬†ottenere¬†il¬†risultato¬†della¬†funzione.¬†

Possiamo sia salvarlo in una variabile che poi stamperemo, che stamparlo direttamente.

def calcAge(yob, name):
    year = datetime.datetime.now().year
    age = year - yob
    return "{} ha {} anni".format(name, age)

age_fabio = calcAge(1980, "Fabio")
print(age_fabio) # Fabio ha 40 anni

print(calcAge(1982, "Serena")) # Serena ha 38 anni

All’interno¬†della¬†nostra¬†funzione¬†possiamo¬†utilizzare¬†ciascuno¬†degli strumenti¬†di¬†controllo¬†del¬†flusso¬†e¬†tipi¬†di¬†strutture¬†dati¬†cheabbiamo¬†imparato¬†fin¬†ora¬†per¬†creare¬†programmi¬†sofisticati.

In precedenza abbiamo creato un programma che calcolava gli anni mancati per andare in pensione. Trasformiamo questa idea in una funzione.


def calc_years_to_retirement(retirement_age=75):
    name = str(input("Insert your Name: "))
    dob = int(input("Your Year of Birth(YYYY): "))
    year = datetime.datetime.now().year
    age = calcAge(dob, name)
    years_left = retirement_age - age
    if years_left > 0 and years_left < 5:
        print("Ti restano solo {} anni alla pensione {}! ".format(years_left, name))
    elif years_left > 5 and years_left < 10:
        print("Manca acora un pó, {} anni alla pensione, {}!".format(years_left, name))
    elif years_left > 10 and years_left < 20:
        print("C'é ancora tanto da lavorate! {} anni alla pensione, {}!".format(
            years_left, name))
    elif years_left < 0:
        years_retired = abs(years_left)
        print("Sei in pensioe da {} anni! Congratulazioni {}".format(
            years_retired, name))
    else:
        print("Non pensare alla pensione! Mancano ancora {} anni alla pensione {}!".format(
            years_left, name))


calc_years_to_retirement()
calc_years_to_retirement(60)

Funzioni e Liste

def calc_names_lenght(names):
    """ Calcola la lunghezza di un nome
        data una lista di stringhe. \n
        names: list Una lista di strighe
    """
    for name in names:
        print("{}: {} caratteri".format(name, len(name)))


names = ["Fabio", "Serena", "Luis", "Carlo", "Mario", "Loreoeoroeoreoor"]

calc_names_lenght(names)

Funzioni con i dizionari, for loop e condizionali if/else

def check_user_status(users):
    """ Controlla stato utente \n
        users: dict Un dizionario
    """
    for usersname, status in users.items():
        if status == True:
            status = "Online"
            print("Username {}: Status: {}".format(
                usersname, status), end="\n")
        else:
            status = "Offline"
            print("{} is {}".format(usersname, status))


users = {"Fabio": True, "Serena": True, "Mario": False, "Carlo": False}
check_user_status(users)

Funzioni e Liste di Tuples

hosts = [("development.local", "127.0.0.1", 200), ("my_staging.dev",
                                                   "80.1.2.3", 403), ("production.com", "88.12.55.66", 500)]


def server_status_log(hosts):
    for host in hosts:
        server_name, ip_address, status_code = host
        if(status_code == 200):
            print("Server: {} at ip address: {} is working properly. Status code {}!".format(
                server_name, ip_address, status_code))
        elif(status_code == 403):
            print("Code: {}! Access denied! Check your credentials for the Server {} at ip: {}".format(
                status_code, server_name, ip_address))
        elif(status_code == 500):
            print("Server: {} has an iternal error, status code: {} IP: {}".format(
                server_name, status_code, ip_address))
        else:
            print("Unknown error.")


server_status_log(hosts)

Corso Python – # Parte 6

In questo video studiamo come alcuni moduli dalla libreria standard di Python, vedremo come usarlie come creare un modulo da zero.

Cos’√© un modulo: 

Il linguaggio Pyton √© composto da una serie di funzioni, strutture dati di base, classi e metodi che possiamo usare subito senza dover installare nessuna libreria esterna o aggiungere nulla. 
Tuttuavia ci sono sono moltissime altre operazioni che possiamo fare semplicemente utilizzando uno o pi√ļ moduli fornitidalla libreria standard di python o da moduli esterni. 
Un modulo racchiude ulteriori funzioni, classi e methodi che vanno ad estendere il linguaggio e che possiamo usare all’interno del nostro programma.

Perch√© usare un modulo?

Questi ci permettono di estendere le funzionalit√° del linguaggio stesso e sviluppareprogrammi pi√ļ complessi.

Libreria standard di python e Python package index (indice pacchetti python):

Python offre una libreria di moduli chiamata Python Standard library da cui possiamo attingere per estendere le sue funzionalita. 

https://docs.python.org/3/library/

Oltre alla libreria standard ci sono altri moduli sviluppati dalla community che possiamo installare con un semplice comando.

https://pypi.org/

Come Importare un modulo dalla libreria standard: 

Importare¬†un¬†modulo¬†dalla¬†libreria¬†standard¬†√©¬†facilissimo.¬†E¬†sufficiente¬†usare¬†la¬†parola¬†chiave¬†“import”¬†seguita¬†dal¬†nome¬†del¬†modulo.¬†

import math

Questo¬†methodo¬†funziona¬†sia¬†nell’interprete¬†che¬†all’interno¬†di¬†un¬†file¬†Python.¬†Le¬†righe¬†di¬†importazione¬†dei¬†moduli¬†vanno¬†all’inizio¬†del¬†file,¬†subito¬†dopo¬†la¬†riga¬†shebang.

File app.py:

#!/usr/bin/env python3
import math

Come Installare un modulo esterno tramite PIP:

  • Installare PIP   
  • Installare modulo desiderato seguendo la documentazione.

Per installare un modulo dalla Python package index invece bisona prima installare PIP, uno strumento di gestione dei pacchetti (tipo composer per PHP o npm per nodejs).

Per verificare se pip √© presente nel systema(linux):

Nella maggior parte dei casi PIP viene installato automaticamente quando installate python.

$ pip --versionpip 9.0.1 from /usr/lib/python2.7/dist-packages (python 2.7)
$ pip3 --versionpip 9.0.1 from /usr/lib/python3/dist-packages (python 3.6)


Se pip é installato otterremo il numero della verione e la posizione del pacchetto. Altrimenti bisogna installarlo. In alcune distribuzioni Linux la versione installata é ralativa a Python 2.
Per installare la versione PIP per Python 3 possiamo eseguire il seguente comando: 

sudo apt install python3-pip


In windows pip é gia installato e disponibile

In Windows power shell:

PS C:\Users\FabioHood> pip --versionpip 20.0.2 from c:\users\fabiohood\appdata\local\programs\python\python38-32\lib\site-packages\pip (python 3.8)PS C:\Users\FabioHood>

Verifica se un modulo √© disponibile:

Per¬†sapere¬†se¬†un¬†modulo¬†√©¬†disponibile¬†o¬†meno¬†possiamo¬†utilizzare¬†l’interprete¬†e¬†provare¬†ad¬†importarlo.¬†Se¬†il¬†modulo¬†non¬†√©¬†installato¬†nel¬†systema¬†otterremo¬†questo¬†errore¬†(ModuleNotFoundError)

>>> import dbrequestsTraceback (most recent call last):  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'dbrequests'
>>>

Per installare un modulo dal Python package index possiamo usare pip install <nome modulo> o leggere la documentazione del modulo.

$ pip3 install requests

# Come usare un modulo:


Per utilizzare un modulo √© sufficiente importarlo e poi all’interno del nostro programmapossiamo usare il nome del modulo per invocare le sue funzionalit√°. Ovviamente bisonga leggere la documentazione dei vari moduli che vogliamo usare prima di farlo.

# Pratica:


I moduli che vedremo a breve sono i seguenti:    

  • Importare moduli con la parola chiave “import”    
  • Il modulo Math    
  • Il modulo Random    
  • Il modulo Datetime    
  • Il modulo Requests (richiede installazione – $ pip3 install requests

# Il modulo Math:

import math# Modulo Math
print(math.factorial(5))print(1*2*3*4*5)
print(math.pi)
print(math.ceil(15.8))
print(math.floor(19.4))

Nel primo esempio il metodo factorial() da come risultato il prodotto dei numeri da 1 a 5.
pi da come risultato il valore di pi greco.
Il metodo ceil() arrotonda in eccesso un valore decimale
mentre il metodo floor() da come risultato la parte intera di un numero decimale.

Il Modulo Random:

```
import random
print(random.randint(1, 29))
print(random.choice([1, 5, 6, 7, 8]))
print(random.sample(["Fabio", "Serena", "Luis", "John"], 2))
```

Nel primo esempio il metodo randint() da come risultato un numero a caso tra due numeri,  specificato come parametri all’interno delle parentesi.

Nel secondo esempio random.choice() da come risultato un valore a caso a partire da una lista di valori.

Nel terzo caso il metodo sample da come risultato una lista composta da x elementi presi a caso. Questo metodo accetta due parametri, la lista da cui prendere gli elementi ed il numero di valori che vogliamo estrarre.

# Il modulo Date time:

import datetime
my_day = datetime.datetime(year=1980, month=1, day=16)
print(my_day)  # returns 1980-01-16 00:00:00
print(my_day.replace(hour=16))  # 1980-01-16 16:00:00
print(my_day.year)  # 1980
today = datetime.datetime.today()
print(today)  # 2020-04-18 16:53:23.018934
now = datetime.datetime.now()
now_utc = datetime.datetime.utcnow()
print(now, now_utc)  # 2020-04-18 17:06:30.285893 2020-04-18 16:06:30.285897
print(now.hour, now_utc.hour)  # 17 16
print(now.minute, now_utc.minute)  # 8 8

# Il modulo Requests:

import requests


website = requests.get("https://fabiopacifici.com", {})
print(website)  # <Response [200]>
# print(website.text)  # return full html page
# print(website.content)  # escapes all special characters
print(website.status_code)  # 200

print(website.encoding)  # UTF-8
# print(website.headers)  # returns all website headers

# passare deti nell'url per formare una richiesta utilizzado un dizionario.
url = "https://fabiopacifici.com"
query = {"name": "fabio"}
website = requests.get(url, params=query)
print(website.url)

# possiamo passare una lista di parametri alla richiesta usando una lista all'interno 
del dizionario.

query_list = {"s": ["laravel", "wordpress"]}
website_ql = requests.get(url, params=query_list)
print(website_ql.url)

# Richiedere dati tramite rest api

api_response = requests.get("https://fabiopacifici.com/wp-json/wp/v2/work")
print(api_response.text)

# specificando api keys as parameters per l'autenticazione.

base_url = "https://fabiopacifici.com"
query = "/wp-json/wc/v2/orders?"
my_keys = {
    "consumer_key": "ck_0e803dd72546fbffd06df86946064e9ce0777460",
    "consumer_secret": "cs_a86a25738751fbd34837ae4b068a8f7ea293a28e"
}
response = requests.get(base_url+query, params=my_keys)
print(response.status_code)

# Possiamo effettuare altri tipi di richieste http, come post, put, delete

line = "--------------------"
r = requests.post('https://httpbin.org/post',
                  data={"name": "fabio", "age": 40})
print(r.json())
print(line)
print(r.json()["form"])

print(line)
r = requests.put('https://httpbin.org/put', data={"name": "Sere", "age": 38})
print(r.json())

print(line)
print(r.json()["form"])


print(line)
r = requests.delete('https://httpbin.org/delete')
print(r.json())
print(r.json()["form"])

Ci sono altri 7 moduli che voglio mostrarvi ma li vedremo nel prossimo episodio.

In tutto gli episodi sui moduli saranno due. 


Ci sar√° anche un episodio extra che chiuder√° il corso dove lavoreremo insieme ad un progetto finale creativo!
Per questo episodio √© tutto, bella lla prossima.

Corso Python – # Parte 7

Moduli Python parte 2

In questo video proseguiamo con i moduli.

Il modulo OS, ed il dizionario ENVIRON:

import os

print(os.getcwd())
print("PATH:", os.environ.get("PATH"))
print(os.system("ls -alt"))
print(os.listdir("/"))

Nel primo esempio getcwd() da come risultato la directory corrente di lavoro.

Nel secondo esempio usiamo il dizionario environ e il metodo get() per ottenere il contentuto della variabile di sistema PATH.

Nel terzo esempio usiamo il metodo system() per eseguire comandi di sistema.

Nel quarto, listdir() da come risultato tutte le cartelle e i file contenuti in una specifica posizione sottoforma di lista.

Il modulo SYS:

import sys

print(sys.version)
print(sys.version_info)
print(sys.platform)
print(sys.argv)
print(sys.getwindowsversion())  # works only from windows power shell

Primo esempio l’attributo version e’ una stringa che contiene il numero della versione dell’interprete python installato ed altre info.


Nel secondo esempio version_info un tuple con i cinque componenti del numero della versione (maggiore, minore, micro, livello release, e serial).


Terzo esempio, platform √© il nome identificativo del sistema. 


Nel quarto esempio, argv contiene una lista di argometi della riga di comando passati ad uno script.

Infine il metodo  getwindowsversion()  (funziona solo all’interno di windows power shell), da come risultato la versione di Windows attualmente in uso.

Il modulo SHUTIL: 

Questo modulo ci permette di eseguire operazioni relative al sistema.

import shutil

print(shutil.disk_usage("/"))
print(shutil.which("php"))
print(shutil.get_terminal_size())
print(shutil.copy("test.txt", "new_test.txt"))

Il modulo PSUTIL (installare via PIP)

Questo modulo bisogna installarlo prima di poterlo usare, non fa parte della libreria standard di Python. Per installare potete usare sia il package manager Linux (se usate una delle distribuzioni Linux) o il package manager Python PIP.

sudo pip3 install psutil
# oppure
pip3 install psutil

Il modulo PSUTIL ci da accesso ad una serie di funzioni utili per ottenere dal sistema operativo alcune informazioni, tipo il consumo della cpu, l’utilizzo del disco rigido e cosi via.

Di seguito alcuni esempi.

import psutil

cpu = psutil.cpu_percent(0.1)
print("{:.2f}%".format(cpu))

print(psutil.cpu_count())
print(psutil.cpu_stats())
print(psutil.getloadavg())
print(psutil.virtual_memory())
print(psutil.disk_partitions(True))
print(psutil.disk_usage("/"))
print(psutil.net_io_counters(pernic=True)) # powershell
print(psutil.net_connections()) # powershell

print(psutil.users())  # use powershell
print(psutil.pids())

Il Modulo PIL:

Il modulo PIL bisogna installarlo perché non é parte della libreria standard Python.

Python image library (PIL) ci permette di lavorare con le immagini.

import PIL.Image as pilimage

image = pilimage.open("fabioesere.jpg")
print(image)
print(image.size)
print(image.mode)

In questo esempio ho usato un sotto modulo, Image.

La documentazione di PIL é abbastanza amplia, vi lascio tutti i link nella descrizione.

Documentazione: 
https://pypi.org/project/PIL/
https://pypi.org/project/Pillow/

Il modulo Pandas:

Usato per lavorare con dati strutturati. Anche questo modulo é abbastanza complesso.

import pandas

infected = [1234, 5555, 3333, 4534, 1335]
deaths = [12, 33, 2, 55, 6]
infected.sort()
deaths.sort()
df = pandas.DataFrame({"Infected": infected, "deaths": deaths}, index=[
                      "Ita", "Spain", "UK", "Usa", "France"])
print(df)

Generiamo dei dati usando le liste definite e i giorni della settimana come indice.

Documentazione:
https://pandas.pydata.org/pandas-docs/stable/getting_started/10min.html

Il modulo CSV:

Questo modulo √© utilissimo. Possiamo usarlo per leggere e generare csv files.

import csv

# Generare file csv
employees = [["Fabio", 40, "dev"], ["Sere", 38, "writer"]]
with open("employees.csv", "w+") as file:
    writer = csv.writer(file)
    writer.writerow(["Carlo", 71, "New King"])
    writer.writerow(["Carlo", 71, "New King"])
    writer.writerow(["Carlo", 71, "New King"])
    writer.writerows(employees)


# Leggere file csv
with open("employees.csv") as file:
    read_file = csv.reader(file)

    for row in read_file:
        print(row)

Nel primo esempio abbiamo creato un file csv mentre nel secondo abbiamo letto il suo contenuto.

Il modulo Subprocess:

Questo modulo ci permette di eseguire comandi del sistema operativo all’interno del nostro script.

import subprocess

list_files = subprocess.run(["ls", "-alt"])

Il comando e i suoi argomenti vanno passati come elementi di una lista.

Anche qui vi consiglio di leggere la documentazione.

Non √© che dovete imparare nulla a memoria, semplicemente sappiate che la documentazione √© sempre li a disposizione.

√Č tutto per i moduli! Ce ne sono una marea, quindi quando volete sviluppare qualcosa fate prima una ricerca per trovare gli strumenti (in questo caso i moduli) adatti al vostro caso.

Per conludere il corso Python per principianti ho pensato ad un progettino finale divertente da realizzare insieme.

Corso Python – # Parte 8 | Progetto Finale – Applicazione Rap Maker.

Applicazione Rap Maker – Live Coding

Questo e’ l’ottavo e ultimo episodio del corso Python per principianti quindi √© arrivato il momento di creare un programma come progetto finale del corso.

Approcceremo il progetto finale in cinque fasi.

  1. Il problema
  2. Il risultato finale
  3. Ricerca strumenti
  4. Scrivi il codice
  5. Testa e migliora.

L’applicazione sviluppata con Python l’ho chiamata “RapMaker” ed e’ un programma che ci guida nella creazione di una canzone rap, o testo in rima, per aspiranti rapper o poeti ūüėā

ūüéôEcco il primo testo creato da me
(in Inglese) usando RapMaker:

I am locked at home, there is a pandemic out there
Police everywhere I can’t go anywhere
Except to buy food, drugs and exercise
I am gonna get sick otherwise

Everyone in the neighbourhood is doing the same
It’s a pandemic, there is no one to blame
Stay home, protect your family and save lives
That’s how the nation survives

When I go out I wear a face mask,
Remote working, it’s now a commonplace task
Keep people far away, and respect the social distance
It just works like life insurance.

When all this is over, I take a vacation with my lover.
There is a lot to discover, we look for a hot island where layover.
Sun, Sea, good mood and food,
That’s everything there is to do.


ūüĎĎ Grazie a Serena Pecci per la collaborazione nella stesura e revisione dei testi scritti. ūüĎĎ