In questa pagina
Tutorial Python: guide pratiche per i problemi Python di tutti i giorni
Python è un linguaggio generico usato per l’automazione, il lavoro sui dati, i backend web e il calcolo scientifico, e la maggior parte delle persone lo impara risolvendo un problema concreto alla volta. Questa pagina è la mappa delle oltre 1.400 guide pratiche su Python di DelftStack. Le guide sono raggruppate qui sotto in base al lavoro che stai cercando di svolgere — pulire il testo, lavorare con liste e dizionari, gestire file e date, correggere gli errori — e ogni gruppo si apre con le guide selezionate dalla redazione che rispondono alle domande più frequenti dei lettori. Che tu stia scrivendo il tuo primo script o che tu mantenga codice Python ogni giorno e ti serva soltanto una risposta affidabile, parti dal percorso di apprendimento oppure vai dritto al gruppo che corrisponde al tuo problema.
Il percorso di apprendimento Python
Non devi leggere 1.400 guide in ordine. Un percorso affidabile è configurare prima l’ambiente, poi padroneggiare i tipi di dato che userai ogni giorno — stringhe, liste e dizionari — poi aggiungere file, date e numeri, e solo alla fine dedicare tempo alla gestione degli errori e al codice orientato agli oggetti. Python premia questo ordine perché ogni fase si costruisce sulla precedente: la gestione del testo rende facile il lavoro sui file, il lavoro sui file rende facile il lavoro sui dati, e i messaggi di errore smettono di essere misteriosi quando sai che cosa il codice stava cercando di fare. Considera le fasi qui sotto come una lista di controllo; quando una ti sembra facile, passa alla successiva.
- Configura l’ambiente. Installa Python e verifica che cosa stai eseguendo con il controllo della versione di Anaconda e Python; la confusione tra versioni è la causa di molte segnalazioni di “installazione rotta”.
- Dati fondamentali. Impara a convertire una stringa in una lista e a ottenere la prima chiave di un dizionario — questi tipi compaiono in quasi ogni programma.
- Attività quotidiane. Eliminare una riga da un file, formattare un datetime, calcolare una media mobile: i gruppi qui sotto coprono questo lavoro di ogni giorno.
- Correggi gli errori. Quando il codice si rompe, ConnectionRefusedError e le altre guide sugli errori mostrano come trovare la causa invece di procedere per tentativi.
- Vai oltre. Ispeziona gli attributi degli oggetti e ritaglia le immagini con OpenCV; i gruppi sulle classi e su OpenCV fanno da ponte verso progetti più grandi.
Dopo il percorso, usa questa pagina come riferimento: ogni gruppo qui sotto è autonomo, e l’indice alfabetico completo sotto ogni sezione elenca tutte le oltre 1.400 guide, compresa la lunga coda di domande specifiche che gli elenchi selezionati non possono coprire.
Stringhe e testo
Quasi ogni script Python tocca del testo: input dell’utente, contenuti di file, pagine web estratte, esportazioni CSV. Questo gruppo copre le quattro cose che farai con quel testo — convertirlo, pulirlo, confrontarlo e, occasionalmente, dargli uno stile. Leggi per prima la guida sulla conversione: trasformare una stringa in una lista di parole o valori è l’operazione di accesso a tutto il resto. Vengono poi le guide sulla pulizia — i caratteri invisibili causano bug esasperanti. Finisci con il confronto, dove vive la logica di convalida, e tieni la guida sullo stile per il giorno in cui costruirai uno strumento da riga di comando.
- Converti una stringa in una lista in Python — Per i caratteri scegli
list(), per le parole e i valori delimitatisplit(), per il testo letteraleast.literal_eval()— maieval()su input non affidabile. - Stampa testo in grassetto in Python — Rendi in grassetto l’output del terminale con le sequenze di escape ANSI grezze, oppure con librerie come
termcolorecolorama. - Rimuovi
\xa0da una stringa in Python — Ripulisci il testo estratto dal web dallo spazio non interrompente invisibile usandounicodedata.normalize()ereplace(). - Confronta stringhe senza distinzione tra maiuscole e minuscole — Confronta senza tenere conto delle maiuscole con
lower()oupper(); passa acasefold()quando coppie comeßessdevono risultare uguali. - Rimuovi le virgole da una stringa in Python — Rimuovi ogni virgola con
str.replace(), oppure usa il moduloreper pattern più complessi. - Elimina la punteggiatura da una stringa in Python — Pulisci il testo dalla punteggiatura in tre modi: un filtro su
string.punctuation, un’espressione regolare o una tabellastr.translate().
Approfondisci: il sotto-hub Python String organizza le 115 guide sulle stringhe per attività — convertire, pulire, cercare e formattare — con una mappa completa dei metodi delle stringhe.
Liste, dizionari e collezioni
Liste e dizionari sono i contenitori predefiniti di Python, e la padronanza nel loro uso separa gli script che si limitano a funzionare da quelli che sono anche brevi e chiari. Inizia dalla guida sul dizionario: chiarisce che cosa significa “primo” per una mappatura — l’ordine di inserimento — e come leggere direttamente una chiave. L’altra base è la guida sullo slicing. Dopo viene l’igiene dei dati: le liste numeriche reali arrivano con valori NaN, e gli estremi e la dispersione vanno individuati e misurati prima che qualsiasi analisi costruita sopra di essi abbia senso.
- Ottieni la prima chiave di un dizionario — Ottieni la prima chiave di un dizionario con
next(iter(d)), con una conversione in lista o con un ciclo, con un valore predefinito sicuro per i dizionari vuoti. - Rimuovi NaN da una lista in Python — Filtra i
NaNnumerici da una lista conmath.isnan()o NumPy; gestisci separatamente la stringa letterale'nan'. - Ottieni l’indice del valore minimo e massimo in una lista — Trova dove si trovano i valori più grande e più piccolo con
max()emin()insieme alist.index(), oppure conargmax()eargmin()di NumPy. - Calcola la deviazione standard di una lista in Python — Misura la dispersione di una lista con
statistics.pstdev()o constd()di NumPy — è qui che approda la ricerca in francesepython écart type. - Dividi una lista a metà in Python — Dividi una lista in due metà con lo slicing e
len(), oppure in modo pigro conitertools.islice().
Errori ed eccezioni
Un messaggio di errore è un rapporto strutturato: il nome dell’eccezione ti dice quale presupposto è fallito, il valore ti dice dove. Leggi questo gruppo in quest’ordine. KeyError significa che ai tuoi dati mancava ciò che il codice si aspettava; l’IndexError scalare significa che un valore NumPy aveva meno dimensioni del previsto. Gli errori di connessione e di autorizzazione sono di un altro tipo — la logica del codice è corretta, ma l’ambiente ha rifiutato l’operazione, quindi la soluzione sta nel controllare il server, la porta o i permessi dei file.
- Correggi ConnectionRefusedError: [Errno 111] Connection refused — Esamina in ordine una connessione TCP rifiutata: server in esecuzione, interfaccia e porta corrette, firewall controllato.
- Risolvi KeyError 0 in Python — Perché
KeyError: 0significa che il dizionario non ha la chiave0, e come proteggere le ricerche contry/exceptodict.get(). - Correggi IndexError: invalid index to scalar variable — L’errore di NumPy sollevato quando si indicizza un valore già scalare; controlla
ndimeshapee usa lo slicing per ottenere un array più piccolo. - Correggi PermissionError: [WinError 5] Access is denied — Risolvi gli errori di accesso negato su Windows controllando i permessi, chiudendo il programma che trattiene il file, cambiando la proprietà o eseguendo come amministratore.
Numeri, matematica e operatori
Questo piccolo gruppo attira una domanda sproporzionata in diverse lingue, perché ogni guida risponde a una domanda scomoda da formulare in una casella di ricerca. La guida su XOR è quella concettuale: la logica bit a bit sta alla base di flag, checksum e di un famoso trucco di scambio. La guida sulla media mobile è quella pratica — per la maggior parte dei lettori è il primo strumento per le serie temporali. Le ultime due guide chiariscono una terminologia che sta dietro a bug reali: il numero di Eulero ha tre diverse funzioni “giuste”, e troncare un float non significa arrotondarlo.
- XOR in Python — Usa
^per lo XOR bit a bit e booleano, leggi la tabella di verità e scopri il trucco dello scambio di variabili. - Calcola una media mobile in Python — Attenua una serie NumPy con una media mobile ricavata da
convolveocumsum, oppure con pandas e Bottleneck. - Il numero di Eulero in Python — Ottieni la costante come
math.e; elevala conmath.exp()per gli scalari onumpy.exp()per gli array, piùexpm1()vicino allo zero. - Tronca un float in Python — Taglia un float a un numero stabilito di decimali, e scopri in che cosa
round()differisce dalla vera troncatura.
Ambiente e configurazione
I problemi di ambiente bloccano tutto il resto, quindi questo gruppo si trova all’ingresso della raccolta anche se nulla di tutto ciò è “programmazione”. Percorrilo nell’ordine in cui incontrerai i problemi. Il primo giorno, verifica quale Python e quale conda hai — la guida sul controllo delle versioni esiste perché sono due numeri diversi, costantemente confusi. Quando un progetto richiede una release esatta di un pacchetto, fissala con pip; pip installa pacchetti, non l’interprete. Le guide sulla disinstallazione servono per ricominciare da capo.
- Controlla la versione di Python e Anaconda — Distingui i due numeri:
conda -Vriporta il gestore di pacchetti,python -Vl’interprete dell’ambiente attivo. - Disinstalla Miniconda completamente — Rimuovi Miniconda in sicurezza su Windows, macOS o Linux: prima esporta gli ambienti, verifica il prefisso, e pulisci i residui solo alla fine.
- Disinstalla Python in Ubuntu — Rimuovi Python da Ubuntu con
apt remove;purgeelimina anche i file di configurazione, eautoremovecompleta il lavoro. - Installa un pacchetto Python senza pip — Installa una libreria manualmente — scarica la distribuzione sorgente da PyPI ed esegui
setup.py— dove pip è inutilizzabile. - Installa una versione specifica di un pacchetto con pip — Fissa una release esatta con
python -m pip install PACKAGE==VERSIONe verificala in un ambiente isolato.
Date e ora
Il codice con date e orari sembra banale finché non deve essere formattato per un altro sistema, ordinato in modo affidabile o confrontato tra fusi orari. Queste guide coprono quasi tutto il lavoro quotidiano con i datetime. La formattazione viene prima: la guida sui millisecondi è il riferimento dietro la ricerca python datetime to string, e mostra perché la scorciatoia ovvia dello slicing corrompe i valori. L’ordinamento è una sola funzione, una volta che sai che sorted() accetta oggetti datetime. La sottrazione nasconde la sottigliezza — il risultato è un timedelta, e mescolare valori naive e consapevoli del fuso solleva un errore che è meglio incontrare qui.
- Converti un datetime in una stringa con i millisecondi — Formatta un datetime con esattamente tre cifre di millisecondi tramite
isoformat(timespec="milliseconds")ostrftime()con%f. - Ordina date e ore in Python — Ordina date e orari con
sorted(), dalle stringhe di data alle liste di oggettidatetime, in entrambe le direzioni. - Sottrai datetime in Python — Sottrai un datetime da un altro per ottenere un
timedelta, poi leggilo in secondi, minuti o ore tramitetotal_seconds().
File, formati di dati e sistema
Il lavoro sui file in Python segue un unico schema — leggere, trasformare, scrivere di nuovo — e la guida sull’eliminazione di una riga ne è l’esempio canonico, compresa la variante sicura per la memoria per i file troppo grandi da contenere in una volta sola. L’altra metà riguarda dove vive il codice: perché una cartella di moduli ha bisogno di una struttura di pacchetto, e come funziona il caricamento dinamico quando i nomi dei moduli non sono noti. La guida sul wheel chiude il cerchio — un file .whl è il modo in cui i pacchetti raggiungono macchine senza un indice, una situazione comune sui server bloccati.
- Elimina una riga da un file in Python — Elimina le righe per numero, oppure solo la prima o l’ultima, leggendo, filtrando e riscrivendo — in streaming per i file di grandi dimensioni.
- Importa tutti i moduli in una directory — Carica ogni modulo di una cartella come pacchetto: importazioni esplicite in
__init__.py, oppure scoperta tramiteimportlib. - Installa un pacchetto Python da un file .whl — Installa un file
.whllocale conpython -m pip install, a partire dai tag di compatibilità presenti nel nome del file.
Funzioni, classi e oggetti
Questo gruppo è volutamente selettivo: tre guide, ciascuna delle quali apre un argomento più grande. La guida sulla sigmoide è il ponte verso il machine learning — implementa la funzione di attivazione da zero, compresa la forma numericamente stabile che manca alla formula ingenua. La guida sugli attributi è un’abilità di debugging sotto mentite spoglie: la maggior parte delle sessioni di debugging inizia stampando ciò che l’oggetto contiene davvero, e Python offre quattro modi per vederlo. La guida sulla variabile di classe risolve una persistente confusione dei principianti: una variabile nel corpo della classe è condivisa da tutte le istanze, senza alcuna relazione con global.
- La funzione sigmoide in Python — Implementa la sigmoide con
math.exp(), rendila numericamente stabile e passa a NumPy o all’expitdi SciPy per gli array. - Stampa gli attributi di un oggetto in Python — Ispeziona un oggetto in quattro modi: accesso con il punto,
getattr(),__dict__per i dati memorizzati,dir()per tutto. - Definisci una variabile globale di classe in Python — Definisci una variabile di classe nel corpo della classe, leggila come
ClassName.attribute— e scopri perchéglobalè una cosa completamente diversa.
OpenCV e immagini
OpenCV è un cluster di interesse separato all’interno della raccolta Python — elaborazione delle immagini piuttosto che programmazione generale — quindi qui ha una sezione mirata e più avanti avrà una sottoguida dedicata. L’ordine conta. Il ritaglio viene per primo perché insegna l’idea centrale: un’immagine OpenCV è un array NumPy, e la maggior parte delle operazioni sono operazioni su array. Il rilevamento dei rettangoli si costruisce sopra, con i contorni, il metodo standard per trovare le forme. La stima della posa con solvePnP è il pezzo avanzato, che combina punti immagine 2D, punti modello 3D e calibrazione della fotocamera.
- Ritaglia immagini usando OpenCV in Python — Ritaglia un’immagine affettando il suo array NumPy, definendo una regione di interesse o selezionandola in modo interattivo con il mouse.
- Usa la funzione solvePnP() di OpenCV — Stima la posa di un oggetto dalle corrispondenze tra punti 2D e 3D con
cv2.solvePnP, tramite matrici della fotocamera e punti di riferimento. - Rileva rettangoli in OpenCV — Rileva i rettangoli trovando i contorni, ordinandoli per area e mantenendo i poligoni a quattro vertici, con
HoughLinesP()come alternativa.
Domande frequenti
Come converto una stringa in una lista in Python?
Dipende da che cosa deve essere ogni elemento. Chiama split() per le parole, oppure split(",") per i valori separati da virgole. Usa list(text) per un elemento per carattere. Per un testo che contiene sintassi letterale Python come "[1, 2, 3]", analizzalo con ast.literal_eval(), non con eval(). La guida da stringa a lista copre ogni caso, compresi i campi CSV tra virgolette.
Che cosa fa [:-1] in Python?
[:-1] è uno slicing che significa “dall’inizio fino all’ultimo elemento escluso”. Su una stringa restituisce ogni carattere tranne l’ultimo; su una lista, una nuova lista senza l’ultimo elemento. Lo slicing costruisce un nuovo oggetto, ed è per questo che [:-1] è il modo standard per scartare un newline finale.
Come correggo ConnectionRefusedError [Errno 111]?
L’errore significa che la connessione TCP è stata rifiutata attivamente: di solito non c’è nulla in ascolto sull’indirizzo e sulla porta usati dal tuo client. Avvia prima il server, poi verifica che il client punti allo stesso indirizzo e alla stessa porta. Un server legato a 127.0.0.1 accetta solo connessioni dalla stessa macchina; per un altro computer, controlla il firewall. La guida su ConnectionRefusedError passa in rassegna i controlli in ordine.
Come controllo la versione di Anaconda / Python?
Apri un Anaconda Prompt ed esegui conda -V per la versione di conda e python -V per la versione di Python — due numeri diversi che vengono costantemente confusi. Il risultato di Python riflette l’ambiente attivo del prompt, quindi attiva prima l’ambiente del tuo progetto. conda list mostra entrambe le righe dei pacchetti; conda info stampa entrambe le versioni. Vedi la guida sul controllo della versione di Anaconda.
Come rimuovo \xa0 da una stringa?
\xa0 è uno spazio non interrompente: un carattere Unicode che sembra uno spazio ma non è uguale a uno spazio, e arriva tipicamente in testi copiati da pagine web o PDF. Due rimozioni affidabili sono unicodedata.normalize("NFKD", text), che lo scompone in uno spazio regolare, e text.replace("\xa0", " "). Sostituirlo con uno spazio è più sicuro che eliminarlo, così le parole unite non si fondono. La guida sulla rimozione di \xa0 confronta i metodi.
Come disinstallo Python (Ubuntu / Windows / Miniconda)?
Il metodo giusto dipende da come Python è stato installato. Su Ubuntu, sudo apt-get remove python3 rimuove il pacchetto; purge elimina anche i file di configurazione, e autoremove ripulisce gli orfani. Per Miniconda, prima esporta gli ambienti che vuoi conservare, poi usa il programma di disinstallazione ufficiale e verifica il prefisso prima di eliminare a mano. Entrambi i casi sono coperti nella guida alla disinstallazione in Ubuntu e nella guida alla disinstallazione di Miniconda.
Passi successivi
Due gruppi qui sopra stanno crescendo in sottoguide dedicate: Stringhe e testo, il gruppo più cliccato di questa raccolta, ed Errori ed eccezioni, dove i lettori arrivano con problemi urgenti. Finché non saranno pubblicate, le sezioni qui sopra sono i punti di ingresso. Per un linguaggio a tipizzazione statica o un ecosistema diverso, continua con le guide pratiche su Java o le guide pratiche su C#.