Errori di sintassi
Gli errori di sintassi si verificano quando c'è un errore nella sintassi del codice che porta al blocco del programma. Ad esempio, un Syntax Error (Invalid Syntax) può apparire nell'editor. Nella ShellTraceback viene indicato il punto in cui si trova l'errore, l'istruzione che lo ha generato e il tipo di errore con descrizione.
Errori di runtime
Gli errori di runtime si manifestano quando vi è un errore nel codice anche se la sintassi è corretta, come nel caso di variabili non inizializzate. Nella shell viene mostrato l'errore, il codice che lo genera e la causa.
Errori semantici
Gli errori semantici sono errori di scrittura che non danno un messaggio d'errore. Esempi comuni di errori comprendono:
- AttributeError: metodo o attributo assegnati a un tipo di dato sbagliato.
- IndexError: quando si utilizza in una sequenza un indice troppo grande.
- NameError: sollevato quando una variabile non viene trovata.
- SyntaxError: sollevato quando vi è un errore di sintassi.
- TypeError: sollevato quando un'operazione o funzione è applicata a un tipo di dato sbagliato.
- ValueError: quando un valore non è valido, come convertire in int una stringa di testo.
- ZeroDivisionError: quando si divide un numero per 0.
Funzioni e metodi utili
Di seguito sono elencati alcuni metodi e funzioni frequentemente utilizzati:
- print: posso mettere
sep="-". - help: modalità interattiva (shell).
- pass: lasciare le funzioni in sospeso (temporaneo) se non si sa come continuarle, è indentata.
- format(numero, specificatore di formato): esempi includono
".2f",".0%",",.2f",",d"(mi da numero con ,). - sum e abs: per tuple e liste, rispettivamente somma e valore assoluto.
- import math.sqrt: importare la funzione radice quadrata da math. Uguale per math.pi.
- round: arrotonda un numero con la virgola.
- len: numero di elementi di una sequenza.
- max e min: per parametri singoli di una tupla o lista.
- statistics.mean([valori]): è necessario importare prima statistics.
- random.random: restituisce un numero con virgola mobile compreso tra 0 e 1.
- Random.randint(a,b): ritorna un numero intero compreso tra a e b (inclusi).
Strutture di controllo
Le strutture di controllo permettono di gestire il flusso di esecuzione del programma:
- if condizione: esegue sequenzialmente se la condizione è vera.
- if-else: permette di eseguire un blocco alternativo se la condizione è falsa. Dopo else posso mettere un altro if e altro else.
- if-elif-else: alternativa alla nidificazione di sopra, posso mettere tutti gli elif che voglio.
- for invariabile [val1,…, valn] oppure range(start, stop (num-1), step): ciclo controllato da contatore.
- while condizione: svolge il blocco di istruzioni fino a quando la condizione è vera.
- while True: quando il ciclo non ha una fine definibile, non è necessario ribattezzare la variabile prima di inserirla nel ciclo (la condizione di uscita dal ciclo è in un if).
- Break e Continue: forzano l'interruzione del ciclo.
Conversioni e manipolazioni delle sequenze
Esistono funzioni utili per la conversione e la manipolazione delle sequenze:
- int(x), float(x), str(x): conversioni tra tipi di dati. Se la conversione non è possibile, si solleva un ValueError.
- list(x) e tuple(x): conversioni tra sequenze.
- sorted(): restituisce una nuova lista o tupla con elementi in ordine crescente (anche alfabetico).