Python di base Sintassi, Tipi di Dati e Strutture di Controllo

Python Sintassi, Tipi di Dati e Strutture di Controllo di Base

 

Sei un principiante che vuole imparare a programmare con Python? Se sì, questo tutorial adatto ai principianti è per te, per farti familiarizzare con le basi del linguaggio. 

Questo tutorial ti introdurrà alla sintassi di Python, che è piuttosto amichevole con l’inglese. Imparerai anche a lavorare con diversi tipi di dati, istruzioni condizionali e cicli in Python.

Se hai già installato Python nel tuo ambiente di sviluppo, avvia un REPL di Python e codifica. Oppure, se vuoi saltare l’installazione e iniziare a codificare subito, ti consiglio di passare a Google Colab e codificare insieme.

 

Ciao, Python!

 

Prima di scrivere il classico programma “Ciao, mondo!” in Python, ecco un po’ di informazioni sul linguaggio. Python è un linguaggio interpretato. Cosa significa questo?

In qualsiasi linguaggio di programmazione, tutto il codice sorgente che scrivi deve essere tradotto in linguaggio macchina. Mentre i linguaggi compilati come C e C++ hanno bisogno dell’intero codice macchina prima che il programma venga eseguito, un interprete analizza il codice sorgente e lo interpreta in tempo reale.

Crea uno script Python, digita il seguente codice e avvialo:

print("Ciao, Mondo!")

 

Per stampare “Ciao, Mondo!”, abbiamo utilizzato la funzione `print()`, una delle tante funzioni integrate in Python.

In questo esempio molto semplice, nota che “Ciao, Mondo!” è una sequenza – una stringa di caratteri. Le stringhe di Python sono delimitate da un paio di apici singoli o doppi. Quindi, per stampare qualsiasi stringa di messaggio, puoi usare `print(“<message_string>”)`.

 

Lettura dell’input dell’utente

 

Ora andiamo un passo avanti e leggiamo alcuni input dall’utente utilizzando la funzione `input()`. Dovresti sempre chiedere all’utente cosa dovrebbero inserire.

Ecco un semplice programma che prende il nome dell’utente come input e lo saluta.

I commenti aiutano a migliorare la leggibilità del codice fornendo ulteriori contesti all’utente. I commenti su una singola linea in Python iniziano con un #.

Nota che la stringa nel frammento di codice sottostante è preceduta da una `f`. Tali stringhe sono chiamate stringhe formattate o f-string. Per sostituire il valore di una variabile in una f-string, specifica il nome della variabile tra parentesi graffe come mostrato:

# Ottieni l'input dall'utente
user_name = input("Inserisci il tuo nome: ")

# Saluta l'utente
print(f"Ciao, {user_name}! Piacere di conoscerti!")

 

Quando esegui il programma, ti verrà chiesto l’input prima, e poi verrà stampato il messaggio di saluto:

Inserisci il tuo nome: Bala
Ciao, Bala! Piacere di conoscerti!

 

Passiamo ora a imparare le variabili e i tipi di dati in Python.

 

Variabili e Tipi di Dati in Python

 

Le variabili, in qualsiasi linguaggio di programmazione, sono come contenitori che memorizzano informazioni. Nel codice che abbiamo scritto finora, abbiamo già creato una variabile `user_name`. Quando l’utente inserisce il proprio nome (una stringa), viene memorizzato nella variabile `user_name`.

 

Tipi di Dati di Base in Python

 

Andiamo attraverso i tipi di dati di base in Python: `int`, `float`, `str` e `bool`, utilizzando esempi semplici che si basano l’uno sull’altro:

Interi (`int`): Gli interi sono numeri interi senza un punto decimale. Puoi creare interi e assegnarli a variabili in questo modo:

age = 25
discount= 10

 

Queste sono istruzioni di assegnazione che assegnano un valore alla variabile. Nei linguaggi come C, è necessario specificare il tipo di dati durante la dichiarazione delle variabili, ma Python è un linguaggio a tipo dinamico. Inferisce il tipo di dati dal valore. Quindi puoi riassegnare una variabile per contenere un valore di un tipo di dati completamente diverso:

number = 1
number = 'uno'

 

Puoi verificare il tipo di dati di qualsiasi variabile in Python utilizzando la funzione `type`:

number = 1
print(type(number))

 

`number` è un intero:

Output >>> 

 

Stiamo ora assegnando un valore di stringa a `number`:

number = 'uno'
print(type(number))

 

Output >>> 

 

Numero in virgola mobile (`float`): I numeri in virgola mobile rappresentano numeri reali con un punto decimale. Puoi creare variabili di tipo di dati `float` così:

altezza = 5.8
pi = 3.14159

 

Puoi eseguire varie operazioni, come addizione, sottrazione, divisione intera, elevazione a potenza e altro ancora, sui tipi di dati numerici. Ecco alcuni esempi:

# Definisci variabili numeriche
x = 10
y = 5

# Addizione
risultato_somma = x + y
print("Addizione:", risultato_somma)  # Output: 15

# Sottrazione
risultato_sottrazione = x - y
print("Sottrazione:", risultato_sottrazione)  # Output: 5

# Moltiplicazione
risultato_moltiplicazione = x * y
print("Moltiplicazione:", risultato_moltiplicazione)  # Output: 50

# Divisione (risultato in virgola mobile)
risultato_divisione = x / y
print("Divisione:", risultato_divisione)  # Output: 2.0

# Divisione intera (divisione intera)
risultato_divisione_intera = x // y
print("Divisione intera:", risultato_divisione_intera)  # Output: 2

# Modulo (resto della divisione)
risultato_modulo = x % y
print("Modulo:", risultato_modulo)  # Output: 0

# Elevazione a potenza
risultato_elevazione_potenza = x ** y
print("Elevazione a potenza:", risultato_elevazione_potenza)  # Output: 100000

 

Stringa (`str`): Le stringhe sono sequenze di caratteri, racchiuse tra virgolette singole o doppie.

nome = "Alice"
citazione = 'Ciao, mondo!'

 

Booleano (`bool`): I booleani rappresentano `True` o `False`, indicando il valore di verità di una condizione.

è_studente = True
ha_patente = False

 

La flessibilità di Python nel lavorare con diversi tipi di dati ti permette di memorizzare, eseguire una vasta gamma di operazioni e manipolare i dati in modo efficace.

Ecco un esempio in cui vengono utilizzati tutti i tipi di dati che abbiamo appreso finora:

# Utilizzo di diversi tipi di dati insieme
età = 30
punteggio = 89.5
nome = "Bob"
è_studente = True

# Verifica se il punteggio è superiore alla soglia di superamento
soglia_superamento = 60.0
superamento = punteggio >= soglia_superamento

print(f"{nome=}")
print(f"{età=}")
print(f"{è_studente=}")
print(f"{punteggio=}")
print(f"{superamento=}")

 

Ecco l’output:

Output >>>

nome='Bob'
età=30
è_studente=True
punteggio=89.5
superamento=True

 

Oltre i Tipi di Dati di Base

 

Supponiamo che tu stia gestendo informazioni sugli studenti in una classe. Sarebbe utile creare una collezione – per memorizzare le informazioni di tutti gli studenti – anziché definire ripetutamente variabili per ogni studente.

 

Liste

 

Le liste sono collezioni ordinate di elementi – racchiusi tra parentesi quadre. Gli elementi in una lista possono essere tutti dello stesso tipo o di tipi diversi. Le liste sono modificabili, il che significa che è possibile modificare il loro contenuto dopo la creazione.

Qui, `student_names` contiene i nomi degli studenti:

# Lista
student_names = ["Alice", "Bob", "Charlie", "David"]

 

Tuple

 

Le tuple sono collezioni ordinate simili alle liste, ma sono immutabili, il che significa che non puoi cambiare il loro contenuto dopo la creazione.

Supponiamo che tu voglia che `student_scores` sia una collezione immutabile che contiene i voti degli studenti.

# Tuple
student_scores = (85, 92, 78, 88)

 

Dizionari

 

I dizionari sono collezioni di coppie chiave-valore. Le chiavi di un dizionario dovrebbero essere uniche e si associano a valori corrispondenti. Sono mutabili e ti consentono di associare informazioni a chiavi specifiche.

Qui, `student_info` contiene informazioni su ogni studente, come nomi e voti, come coppie chiave-valore:

student_info = {'Alice': 85, 'Bob': 92, 'Charlie': 78, 'David': 88}

 

Ma aspetta, c’è un modo più elegante per creare dizionari in Python.

Stiamo per imparare un nuovo concetto: comprehension dei dizionari. Non preoccuparti se non è chiaro subito. Puoi sempre imparare di più e lavorarci successivamente.

Ma le comprehension sono abbastanza intuitive da capire. Se vuoi che il dizionario `student_info` abbia i nomi degli studenti come chiavi e i loro voti agli esami corrispondenti come valori, puoi creare il dizionario in questo modo:

# Utilizzo di una comprehension dei dizionari per creare il dizionario student_info
student_info = {nome: voto for nome, voto in zip(nomi_studenti, student_scores)}

print(student_info)

 

Nota come abbiamo utilizzato la funzione `zip()` per iterare contemporaneamente sia sulla lista `nomi_studenti` che sulla tupla `student_scores`.

Output >>>

{'Alice': 85, 'Bob': 92, 'Charlie': 78, 'David': 88}

 

In questo esempio, la comprehension del dizionario associa direttamente ogni nome dello studente dalla lista `nomi_studenti` al voto all’esame corrispondente dalla tupla `student_scores`, creando il dizionario `student_info` con i nomi come chiavi e i voti come valori.

Ora che conosci i tipi di dati primitivi e alcune sequenze/iterabili, passiamo alla prossima parte della discussione: strutture di controllo.

 

Strutture di controllo in Python

 

Quando esegui uno script Python, l’esecuzione del codice avviene in modo sequenziale, nello stesso ordine in cui si trova nello script.

A volte, potresti aver bisogno di implementare la logica per controllare il flusso di esecuzione in base a determinate condizioni o iterare su un iterabile per elaborare gli elementi al suo interno.

Impareremo come gli statement if-else facilitano la divisione e l’esecuzione condizionale. Impareremo anche come iterare sulle sequenze utilizzando cicli e gli statement di controllo dei cicli break e continue.

 

Statement if

 

Quando hai bisogno di eseguire un blocco di codice solo se una particolare condizione è vera, puoi utilizzare lo statement `if`. Se la condizione si valuta come falsa, il blocco di codice non viene eseguito.

   

Considera questo esempio:

voto = 75

if voto >= 60:
    print("Congratulazioni! Hai superato l'esame.")

 

In questo esempio, il codice all’interno del blocco `if` verrà eseguito solo se il `voto` è maggiore o uguale a 60. Poiché il `voto` è 75, verrà stampato il messaggio “Congratulazioni! Hai superato l’esame.”.

Output >>> Congratulazioni! Hai superato l'esame.

 

Statement condizionali if-else

 

Lo statement `if-else` ti consente di eseguire un blocco di codice se la condizione è vera e un blocco diverso se la condizione è falsa.

   

Costruiamo sull’esempio dei punteggi dei test:

punteggio = 45

if punteggio >= 60:
    print("Congratulazioni! Hai superato l'esame.")
else:
    print("Mi dispiace, non hai superato l'esame.")

 

Qui, se il `punteggio` è inferiore a 60, il codice all’interno del blocco `else` verrà eseguito:

Output >>> Mi dispiace, non hai superato l'esame.

 

Scala if-elif-else

 

La dichiarazione `if-elif-else` viene utilizzata quando si hanno più condizioni da verificare. Consente di testare più condizioni ed eseguire il blocco di codice corrispondente per la prima condizione vera incontrata.

Se le condizioni nell’istruzione `if` e in tutte le istruzioni `elif` risultano false, viene eseguito il blocco `else`.

   

punteggio = 82

if punteggio >= 90:
    print("Eccellente! Hai preso un A.")
elif punteggio >= 80:
    print("Buon lavoro! Hai preso un B.")
elif punteggio >= 70:
    print("Non male! Hai preso un C.")
else:
    print("Devi migliorare. Hai preso un F.")

 

In questo esempio, il programma controlla il `punteggio` rispetto a più condizioni. Viene eseguito il blocco di codice della prima condizione vera. Poiché il `punteggio` è 82, otteniamo:

Output >>> Buon lavoro! Hai preso un B.

 

Istruzioni if nidificate

 

Le istruzioni `if` nidificate vengono utilizzate quando è necessario verificare più condizioni all’interno di un’altra condizione.

nome = "Alice"
punteggio = 78

if nome == "Alice":
    if punteggio >= 80:
        print("Ottimo lavoro, Alice! Hai preso un A.")
    else:
        print("Bel tentativo, Alice! Continua così.")
else:
    print("Stai andando bene, ma questo messaggio è per Alice.")

 

In questo esempio, c’è un’istruzione `if` nidificata. Prima, il programma verifica se `nome` è “Alice”. Se è vero, verifica il `punteggio`. Poiché il `punteggio` è 78, viene eseguito il blocco `else` interno, stampando “Bel tentativo, Alice! Continua così.”

Output >>> Bel tentativo, Alice! Continua così.

 

Python offre diversi costrutti di loop per iterare su collezioni o eseguire compiti ripetitivi. 

 

Ciclo For

 

In Python, il ciclo `for` fornisce una sintassi concisa per consentirci di iterare su oggetti iterabili esistenti. Possiamo iterare sulla lista `nomi_studenti` come segue:

nomi_studenti = ["Alice", "Bob", "Charlie", "David"]

for nome in nomi_studenti:
    print("Studente:", nome)

 

Il codice sopra restituisce:

Output >>>

Studente: Alice
Studente: Bob
Studente: Charlie
Studente: David

 

Ciclo While

 

Se si desidera eseguire un pezzo di codice finché una condizione è vera, è possibile utilizzare un ciclo `while`.

Usiamo la stessa lista `nomi_studenti`:

# Utilizzo di un ciclo while con un oggetto iterabile esistente

nomi_studenti = ["Alice", "Bob", "Charlie", "David"]
indice = 0

while indice < len(nomi_studenti):
    print("Studente:", nomi_studenti[indice])
    indice += 1

 

In questo esempio, abbiamo una lista `nomi_studenti` contenente i nomi degli studenti. Utilizziamo un ciclo `while` per scorrere la lista tenendo traccia della variabile `indice`.

Il ciclo continua finché l’`indice` è minore della lunghezza della lista. All’interno del ciclo, stampiamo il nome di ogni studente e incrementiamo l’`indice` per passare allo studente successivo. Notare l’uso della funzione `len()` per ottenere la lunghezza della lista.

Questo ottiene lo stesso risultato dell’utilizzo di un ciclo `for` per iterare sulla lista:

Output >>>

Studente: Alice
Studente: Bob
Studente: Charlie
Studente: David

 

Utilizziamo un ciclo `while` che rimuove elementi da una lista fino a quando la lista è vuota:

student_names = ["Alice", "Bob", "Charlie", "David"]

while student_names:
    current_student = student_names.pop()
    print("Studente corrente:", current_student)

print("Tutti gli studenti sono stati elaborati.")

 

Il metodo `pop` della lista rimuove e restituisce l’ultimo elemento presente nella lista.

In questo esempio, il ciclo `while` continua fintanto che ci sono elementi nella lista `student_names`. All’interno del ciclo, il metodo `pop()` viene utilizzato per rimuovere e restituire l’ultimo elemento della lista, e viene stampato il nome dello studente corrente.

Il ciclo continua finché tutti gli studenti sono stati elaborati, e viene stampato un messaggio finale al di fuori del ciclo.

Output >>>

Studente corrente: David
Studente corrente: Charlie
Studente corrente: Bob
Studente corrente: Alice
Tutti gli studenti sono stati elaborati.

 

Il ciclo `for` è generalmente più conciso e più facile da leggere per iterare su iterabili esistenti come le liste. Ma il ciclo `while` può offrire maggiore controllo quando la condizione di loop è più complessa.

 

Istruzioni di controllo del ciclo

 

`break` esce prematuramente dal ciclo, e `continue` salta il resto dell’iterazione corrente e passa alla successiva.

Ecco un esempio:

student_names = ["Alice", "Bob", "Charlie", "David"]

for name in student_names:
    if name == "Charlie":
        break
    print(name)

 

Il controllo esce dal ciclo quando il nome è Charlie, dandoci l’output:

Output >>>
Alice
Bob

 

Emulare il comportamento del ciclo “do-while”

 

In Python, non esiste un ciclo `do-while` incorporato come in alcuni altri linguaggi di programmazione. Tuttavia, è possibile ottenere lo stesso comportamento utilizzando un ciclo `while` con un’istruzione `break`. Ecco come è possibile emulare un ciclo `do-while` in Python:

while True:
    user_input = input("Inserisci 'exit' per interrompere: ")
    if user_input == 'exit':
        break

 

In questo esempio, il ciclo continuerà a eseguirsi indefinitamente finché l’utente non inserisce ‘exit’. Il ciclo viene eseguito almeno una volta perché la condizione è inizialmente impostata su `True`, quindi l’input dell’utente viene controllato all’interno del ciclo. Se l’utente inserisce ‘exit’, viene eseguita l’istruzione `break`, che esce dal ciclo.

Ecco un esempio di output:

Output >>>
Inserisci 'exit' per interrompere: ciao
Inserisci 'exit' per interrompere: salve
Inserisci 'exit' per interrompere: arrivederci
Inserisci 'exit' per interrompere: prova di più!
Inserisci 'exit' per interrompere: exit

 

Si noti che questo approccio è simile a un ciclo `do-while` in altri linguaggi, in cui il corpo del ciclo viene garantito di essere eseguito almeno una volta prima che venga controllata la condizione.

 

Conclusione e prossimi passi

 

Spero che tu sia stato in grado di seguire questo tutorial senza difficoltà. Ora che hai acquisito una comprensione dei concetti fondamentali di Python, è il momento di iniziare a scrivere dei progetti molto semplici applicando tutti i concetti che hai appreso. Bala Priya C è una sviluppatrice e scrittrice tecnica dell’India. Le piace lavorare all’intersezione tra matematica, programmazione, data science e creazione di contenuti. Le sue aree di interesse e competenza includono DevOps, data science e elaborazione del linguaggio naturale. Ama leggere, scrivere, programmare e bere caffè! Attualmente sta lavorando per imparare e condividere le sue conoscenze con la comunità degli sviluppatori attraverso la stesura di tutorial, guide pratiche, articoli di opinione e altro ancora.