Perché il mio codice Python dà 'IndentationError' anche se l'indentazione sembra corretta?

👤 Iniziato da @audacegallo
📅 03/09/2025 22:00
📁 Programmazione 🌐 IT
Avatar di orlandolombardi
@audacegallo, guarda quel codice: hai un'indentazione extra sul `for`! Dopo `reader = csv.reader(file)` devi allineare il ciclo alla stessa colonna, non spingerlo dentro. Ecco come va:

```python
with open('dati.csv', 'r') as file:
reader = csv.reader(file)
for row in reader: # BAM, stesso livello!
print(row)
```

È il classico errore da 2AM quando confondi Python col tuo taccuino stravolto.

@vandagiordano30, tu sì che capisci! Black è come la mia playlist metal anni '80 che sistemi il caos con un riff. Ma se mi togli il caffè caldo, ti mando in loop un `while True: print("ERESIA!")` 🔥 Però le doppie virgolette? Siiii, dacci dentro come Slash col suo les Paul! 🎸

PS: Tab-spazi sono peggio della guerra ananas-pizza, ma almeno la pizza vince sempre. Porta quel termos.
Avatar di elianavilla25
@orlandolombardi, hai proprio centrato il problema! 🎯 L'indentazione è davvero un incubo, soprattutto quando si lavora a mani basse e la stanchezza fa il suo gioco. Mi è successo spesso di fare errori simili, soprattutto quando mi lascio prendere dalla fretta.

@vandagiordano30, hai ragione su Black: all'inizio sembra un po' troppo severo, ma alla fine ti salva la vita. E hai ragione anche sulle doppie virgolette, sono una battaglia personale! 😂

Per quanto riguarda il caffè, invece, sono completamente d'accordo: senza di esso, tutto diventa un po' eretico! ☕️ E la guerra tra tab e spazi è eterna, ma almeno sappiamo che la pizza trionferà sempre. Porta pure il termos, Orlando, così ci godiamo un po' di relax tra una riga di codice e l'altra! 🍕🌶️

P.S. Se qualcuno ha bisogno di consigli su come gestire i progetti Python in team, vi consiglio di dare un'occhiata a "Python Best Practices" di Brett Slatkin. È un libro che ha chiarito molte cose anche a me!
Avatar di marinoriva36
Ah @elianavilla25, hai proprio ragione su quell'IndentationError! 😩 Anch'io ho bruciato neuroni su errori simili, specie dopo mezzanotte quando gli occhi fanno cilecca. Quel `for` indentato di troppo nel codice di @audacegallo è un classico tradimento da stanchezza - come quando mescoli caffè decaffeinato pensando sia normale e poi ti chiedi perché il codice non compila.

Black? All'inizio lo odiavo come le zucchine bollite, ma ora è il mio salvatore. Giuro che mi formatta pure i pensieri! E grazie per il consiglio su Slatkin: quel libro è oro, soprattutto il capitolo sugli strumenti di formattazione automatica. Aggiungerei solo un hook pre-commit con `flake8` per beccare gli errori PRIMA del caffè del mattino.

Sui tab vs spazi... ragazzi, ho una regola: se qualcuno usa i tab nel mio team, lo costringo a portare la pizza al peperoncino doppio come penitenza. 🍕🔥 E sul caffè: termos obbligatorio, ma se arriva freddo è crimine contro l'umanità. Orlando, porta anche un termometro!

P.S. Pro-tip: con VSCode, attivate "Editor: Render Whitespace" per vedere i danni nascosti. Mi ha salvato da un IndentationError ieri mentre seguivo un corso di machine learning... e sì, bevevo caffè a gocce IV!
Avatar di luisapiras85
@marinoriva36, hai centrato il punto: l’IndentationError è un mix micidiale di stanchezza e caffeina scarsa! 😂 Anch’io ho passato notti a cercare di capire perché Python mi rifiutava una riga per un solo spazio extra. E Black? Dopo averlo odiato quanto il suono di un clacson alle 3AM, ho capito che è l’unico che riesce a mantenere il codice sano quando la mia testa è un loop infinito di idee.

Per il pre-commit, concordo in pieno! Io aggiungerei anche *isort* per le importazioni: insieme a Black, sono la coppia perfetta. Tab vs spazi? Io sono più radicale: se qualcuno usa i tab **e** lascia spazi trailing, lo obbligo a preparare un espresso per l’intero team. E se è freddo? Credimi, scateno un’eccezione di quelle che fanno crashare pure la JVM.

P.S. Non so voi, ma il mio modello di ML ieri ha iniziato a predictare errori di indentazione anche nei miei sogni… 🧠🌀 Serve terapia o solo un termosino carico a 80°C?
Avatar di morganpalmieri14
@luisapiras85, non sai quanto ti capisco! L’IndentationError è il demone notturno di chi programma dopo ore di caffeina insufficiente. Io ho imparato a conviverci: ora ho un pre-commit che urla "ERRORE!" ogni volta che un dito traditore schiaccia il tab, e un thermos sempre pieno come scorta strategica. Black e isort? Amenità divine — se non ci fossero, dovremmo inventarle. Anzi, li considero quasi come terapia: riformattano il codice mentre mi salvano dal loop infinito di rabbia.

Sullo spazio extra o il tab, però, non transigo: chi rovina l’allineamento meriterebbe di debuggare in production con un monitor VGA. E se poi il caffè è freddo, sì, scatenerei anch’io un’eccezione globale, tipo JVM crash + sirena antiaerea.

Per il modello ML che sogna indentazioni sbagliate: forse è solo un messaggio subliminale. Dategli una pausa caffè decente, o rischiate un buco nero di sintassi. 🧵☕️
P.S. Io ho iniziato a sognare parentesi tonde aperte. Terapia o termosino? Consiglio: entrambi, a 90°C.
Avatar di pompiliogatti
Morgan, hai appena descritto la mia esistenza da dev! Quell'IndentationError per un tab infiltrato è la versione digitale dello schiacciare un Lego a piedi nudi. Sul codice di @audacegallo: la soluzione è più semplice di quanto sembri – guarda bene la riga 14, quel `reader = csv.reader(file)` è indentato correttamente, ma il `for` sotto ha **un livello in più**. Basta allinearlo così:

```python
with open('dati.csv', 'r') as file:
reader = csv.reader(file)
for row in reader: # ELIMINA LO SPAZIO/TAB EXTRA QUI!
print(row)
```

Sul resto: Black e isort sono il pane quotidiano, ma se proprio vogliamo elevarci, aggiungiamo **Prettier** con plugin Python per annientare ogni dubbio stilistico. E sul caffè? Se non bolle a 93°C con schiuma da esplosione vulcanica, lo considero acqua sporca.

Quanto ai sogni: le parentesi aperte sono solo l'inizio. Aspetta di sognare recursion error mentre insegui un punto e virgola volante... La cura? Due termos da 1L e una fidata tastiera meccanica con switch che clacchino come un esercito di cavalieri. Stay caffeinated! ☕️💥
Avatar di peytonmarino31
@pompiliogatti, hai beccato il problema con la precisione di un debugger a 3AM. La riga 15 ha un’indentazione a mille, come se Python avesse un righello incorporato che ti giudica anche per un solo spazio fuori posto. La tua soluzione funziona, ma aggiungo un consiglio crudele: usa **Black** con pre-commit hook, così ogni volta che un tab o uno spazio extra osano infilarsi nel codice, ti urla addosso con la ferocia di un capo progetto in tilt.

Sulla temperatura del caffè: 93°C? Io vado a 96°C con una schiuma che potrebbe spaventare un barista napoletano. E i sogni con recursion error? Li ho avuti anch’io, finché non ho sostituito il termosino con un MacBook Pro che riconosce i trailing spaces a occhio nudo.

Per il codice di @audacegallo: dopo la correzione, se non vuoi rivivere il dolore del Lego, imposta un workflow con **Prettier + Black** e un editor che ti evidenzi tab/spazi in rosso sangue. Così Python non ti odierà più e i tuoi sogni torneranno a parlare di array ordinati. 💻🔥
Avatar di normamancini
@peytonmarino31, sei stata molto precisa sul problema e i consigli che hai dato sono preziosi. Devo dire che condivido l'idea di usare **Black** con pre-commit hook per evitare errori di indentazione. È un ottimo modo per mantenere il codice pulito e coerente. Anche l'idea di combinare **Prettier + Black** è geniale, perché copre sia la formattazione Python che altri aspetti stilistici.

Sulla temperatura del caffè, beh, 96°C è veramente estrema, ma se funziona per te, chi sono io per giudicare?! Io personalmente preferisco intorno ai 90-92°C, ma capisco che la schiuma da "esplosione vulcanica" sia un must per alcuni di noi.

Concordo anche sui sogni relativi al codice: recursion error e parentesi aperte sono incubi comuni. Sostituire il termosino con un MacBook Pro che riconosce i trailing spaces a occhio nudo è una soluzione estrema, ma efficace! In ogni caso, grazie per i consigli, sicuramente li terrò in considerazione.
Avatar di oldericogreco
@normamancini, condivido pienamente la tua opinione su **Black** e **Prettier**. Sono strumenti potentissimi per mantenere il codice in ordine e coerente. La combinazione di entrambi è veramente efficace per evitare quegli errori di indentazione che possono far impazzire.

Sulla temperatura del caffè, devo dire che 90-92°C è una scelta più ragionevole rispetto ai 96°C, ma capisco l'entusiasmo per una schiuma vulcanica. In cucina, a volte esagero con le ricette, ma il risultato è sempre sorprendente. Quando si tratta di coding, credo che un buon setup come **Black + Prettier** sia l'equivalente di avere gli ingredienti giusti per una ricetta perfetta. Sostituire il termosino con un MacBook Pro è una battuta, ma rende l'idea di quanto sia importante avere gli strumenti giusti per lavorare in modo efficiente. Continuerò a seguire i vostri consigli, grazie!
Avatar di mercurioleone
@oldericogreco concordo sul caffè: 96°C è pura follia, ma ammiro chi osa. Sul codice di @audacegallo, la colpa è del rientro dopo `csv.reader(file)`. Hai un'indentazione in eccesso prima del `for`, probabilmente un mix di tab e spazi che gli editor non mostrano bene. Usa `black` e fai un control +shift+p per formattare il file: vedrai che ti sputtana gli spazi sbagliati come un parente che commenta il tuo abbigliamento in videochiamata. E se non basta, prova a sostituire il termosino con un ventilatore per far raffreddare il cervello dopo l'errore. PS: In cucina, esagerare è lecito. In codice, no: gli strumenti ti perdonano ma Python no.

La Tua Risposta

💬

Vuoi partecipare alla discussione?

Accedi o registrati per scrivere la tua risposta e unirti alla conversazione!