vuoi
o PayPal
tutte le volte che vuoi
ISTRUZIONE
Le keyword ed servono per creare costrutti condizionali in Python. Alcuni costrutti, come l'istruzione
if else
sono compound statement, che consistono in un'intestazione e un blocco di istruzioni. Questi richiedono
if,
un ":" alla fine dell'header e il blocco di istruzioni deve essere indentato. Il blocco:
Inizia sulla riga successiva all'header
Contiene istruzioni indentate
Si conclude quando si trova un'istruzione meno indentata I blocchi possono essere annidati
all'interno di altri.
Operatori relazionali
Gli operatori relazionali sono: maggiore (>), maggiore o uguale (>=), minore (<), minore o uguale (<=),
uguale (==) e non uguale (!=).
Errore – Floating point
I numeri in floating-point hanno precisione limitata, e i calcoli su di essi possono causare errori di
approssimazione. Per confrontare questi numeri, si possono usare due metodi:
1. Uso di una costante EPSILON: Si verifica se la differenza tra due numeri è abbastanza piccola,
usando un valore molto piccolo (ad esempio, 10 )
-14
ε [Pagina 5]
Politecnico di Torino Riassunto di Informatica
2. Uso di La funzione del modulo permette di confrontare due
math.isclose(): isclose() math
numeri con un margine di errore
Ordine alfabetico
Per confrontare due stringhe alfabeticamente si utilizza un operatore relazionale, come string1 < string2.
Alcuni dettagli importanti:
Le lettere maiuscole vengono prima delle minuscole (es. 'A' < 'a').
Lo spazio viene prima di tutti i caratteri stampabili.
I numeri (0-9) vengono prima delle lettere.
L'ordine delle lettere è definito dal codice ASCII (Subset di Unicode), ma l'ordine delle lettere
accentate potrebbe non essere sempre logico o corretto.
Precedenze degli operatori
Gli operatori aritmetici hanno la precedenza sugli operatori relazionali, quindi i calcoli vengono eseguiti
prima del confronto. Generalmente, i calcoli si trovano a destra degli operatori di confronto o
assegnazione.
Istruzione pass
Durante lo sviluppo del codice, è utile scrivere prima lo "scheletro" della logica e riempirlo in seguito. La
keyword pass consente di creare un blocco if, else o elif senza alcuna istruzione, mantenendo la sintassi
corretta. In fase di sviluppo, pass non fa nulla, ma sarà poi sostituito da codice effettivo.
H -
AND TRACING
Hand-tracing è un metodo per verificare il corretto funzionamento di un programma, tracciando
manualmente l'evoluzione delle variabili. Si crea una tabella con le variabili principali e si annotano i loro
valori. Utilizzando il codice o pseudocodice, si simula l'esecuzione del programma con dati di input di
esempio che producano un risultato prevedibile, testando tutti i rami del codice.
V O B
ARIABILI E PERATORI OOLEANI
Nel 1847 George Boole introdusse un nuovo tipo di formalismo logico, basato esclusivamente su enunciati
che potevano essere veri o falsi.
Variabili booleane
Una variabile Booleana può solo essere Vera o Falsa (1 o 0). Una variabile booleana è spesso utilizzata
come flag (indicatore) proprio perché può essere solo vera o falsa. bool è un tipo di dato in Python (può
avere i valori True e False). La condizione di un’istruzione if è un valore Booleano.
Operatori booleani
Ci sono tre diversi operatori Booleani principali: and, or, not.
Legge di de morgan
La legge di De Morgan spiega come negare una combinazione di and e or:
è la stessa cosa di
not(A and B) not(A) or not(B)
è la stessa cosa di
not(A or B) not(A) and not(B)
[Pagina 6]
Politecnico di Torino Riassunto di Informatica
CICLI
C ICLO WHILE
Il ciclo viene utilizzato per ripetere lo stesso blocco di istruzioni finché una determinata condizione
while
rimane vera. Esistono diversi tipi di cicli while in base a come viene controllata la condizione.
Un ciclo controllato da un contatore si basa su un valore numerico che conta il numero di ripetizioni. Il
ciclo si ferma quando è stato raggiunto un numero predefinito di iterazioni. In informatica, è comune
inizializzare il contatore a 0, sebbene a volte possa partire da 1. È importante fare attenzione agli off-by-
one errors, che si verificano quando il ciclo supera o non raggiunge il numero desiderato di iterazioni.
Un ciclo controllato da un evento, invece, continua finché una condizione diventa falsa, ma il numero di
iterazioni non è noto in anticipo. Il ciclo si interrompe solo quando la condizione specificata non è più vera.
Per interrompere anticipatamente un ciclo, possiamo usare:
che interrompe immediatamente il ciclo e fa proseguire l'esecuzione del programma dalle
break,
istruzioni successive.
che salta l'iterazione corrente e passa direttamente alla successiva, senza completare
continue,
quella in corso.
V ALORI SENTINELLA
Quando si legge una sequenza di input, spesso è necessario un metodo per indicare la fine della
sequenza. Quando non si sa quanti elementi ci sono un una lista, si può utilizzare un carattere o un valore
speciale per identificare l’ultimo della lista. Questo valore si chiama “sentinella”, che identifica la fine dei
data ma NON FA PARTE DEI DATI STESSI. Ad esempio: Per input di numeri interi positivi, si può ad esempio
usare 0 o -1.
C ICLO FOR
Il ciclo serve a iterare su tutti i valori di un qualsiasi contenitore. Un contenitore è un oggetto (come
for…in
una stringa) che può memorizzare un insieme di elementi. Python ha diversi tipi di contenitori:
Una stringa è un contenitore di caratteri
Una lista è un contenitore di valori arbitrari (numerici, stringhe, liste, …)
Un file è un contenitore di linee di testo
Contenitore Range
È un contenitore speciale di una sequenza di numeri consecutivi. Si genera con la funzione che
range(N)
crea una sequenza di interi da 0 a N-1. Quindi un for con un è equivalente a un ciclo
range() while
controllato da un contatore.
Ciclare sull’indice e valore
La funzione enumerate trasforma un contenitore un qualsiasi contenitore in una sequenza di coppie.
for (indice, valore) in enumerate(nome):
G ENERAZIONE NUMERI CASUALI
Python mette a disposizione un generatore di numeri casuali che produce numeri che sembrano casuali. I
numeri sono in realtà pseudo-casuali. Sono infatti estratti da una sequenza di numeri non consecutivi che
non si ripetono (a meno di continuare nella sequenza per molto tempo). Il generatore di numeri casuali si
trova nel modulo random import
from random random
La funzione ritorna un numero compreso tra 0 e 1. Invece la funzione ritorna un
random() randint(a,b)
numero intero compreso tra a e b. [Pagina 7]
Politecnico di Torino Riassunto di Informatica
FUNZIONI
Le funzioni possono essere viste come "scatole nere": vengono passati loro i dati necessari per eseguire un
compito e, una volta completato, restituiscono un risultato che può essere utilizzato. Una funzione è una
sequenza di istruzioni a cui viene dato un nome, e si invoca per eseguire tali istruzioni. Quando la funzione
termina, il risultato è restituito e può essere utilizzato in un'espressione.
A RGOMENTI
Gli argomenti sono i valori che vengono passati alla funzione al momento della sua invocazione. Le
funzioni possono ricevere uno o più argomenti, e possono anche non richiederne affatto. Le variabili
parametro (parametri formali) ricevono gli argomenti (parametri effettivi o parametri attuali)
dell’invocazione della funzione. Gli argomenti possono essere il valore corrente di una variabile o
un’espressione (funzione o lambda). La variabile parametro è dichiarata nella funzione invocata.
Gli argomenti possono essere associati ai parametri in due modi:
1. Parametri posizionali: Gli argomenti vengono associati ai parametri in base alla loro posizione. Ad
esempio, il primo argomento va al primo parametro, il secondo al secondo, e così via.
2. Parametri nominativi: Gli argomenti sono associati ai parametri tramite il nome del parametro,
per specificare chiaramente a quale parametro assegnare ciascun valore.
Le variabili di default permettono di assegnare un valore predefinito a un parametro, che verrà utilizzato
se nessun argomento è passato per quel parametro. Ad esempio:
def complex(real=0.0, imag=0.0)
Infine, le liste di argomenti variabili consentono di passare un numero arbitrario di argomenti a una
funzione. Questi parametri non sono associati a un nome specifico. La sintassi per definirli è *args, e
viene utilizzata per raccogliere gli argomenti passati alla funzione come una tupla.
R ESTITUZIONE DEI VALORI
L'output che una funzione calcola è chiamato valore restituito. Ogni funzione può restituire un solo valore,
ma se è necessario restituire più valori, è possibile aggirare questa limitazione restituendo una lista o una
tupla. Alcune funzioni, tuttavia, non restituiscono alcun valore. L'istruzione return termina immediatamente
l'esecuzione della funzione e restituisce il valore al chiamante. È importante che tutte le diramazioni del
flusso di esecuzione di una funzione (tutti i percorsi possibili) restituiscano un valore, il che implica che ogni
possibile percorso debba includere un'istruzione return.
R EALIZZAZIONE DI UNA FUNZIONE
Per definire una funzione, è necessario seguire questi passaggi:
Scegliere un nome per la funzione.
Dichiarare le variabili per ogni argomento che la funzione riceverà.
Usare la parola chiave def per unire tutte queste informazioni e formare la prima riga della
definizione della funzione.
L'istruzione def apre un nuovo blocco di codice (un compound statement), all'interno del quale scriveremo
le istruzioni che compongono il corpo della funzione.
L A FUNZIONE MAIN
Quando si definiscono e usano funzioni in Python, è buona pratica che tutte le istruzioni del programma si
trovino all’interno di funzioni, e che una di esse venga indicata come punto di partenza dell’esecuzione.
Sebbene qualsiasi nome possa essere scelto, per convenzione si usa main, un nome comune in altri
linguaggi di programmazione. Ovviamente, è necessario includere un'istruzione che invochi la funzione
main. In generale, l'invocazione della funzione main dovrebbe avvenire:
Se il programma è eseguito in modalità standalone.
Non dovrebbe essere eseguita se il programma è importato come modulo in un programma più
grande. [Pagina 8]
Politecnico di Torino Riassunto di Informatica
Per gestire questo comportamento, si controlla la variabile speciale __name__, che contiene il nome del
modulo o la stringa '__main_