Forum >> Principianti >> Errore di "spazio"

Pagina: 1

Buonasera, sto tentando di avere una data tipo 20200202 e non una data 202022; partendo dalla libreria datetime.

Allego la routine che mi da l'errore .... e si che è molto basica ma mi sta bloccando.

    global data_odierna
    today = datetime.date.today() # data odierna
    print (today)
    anno=str(today.year)
    mese=str(today.month)
    print(today.month)
    if len(today.month) == 1: pensando di sbagliare ho provato anche "1" ma l'errore è lo stesso
        mese = "0" + mese
    giorno=str(today.day) # giorno
 #   print (int(anno+mese+giorno)) # data odierna in forma "intera"

    data_odierna =(int(anno+mese+giorno)) # data odierna in forma "intera"

File "Pretty.py", line 42
print(today.month)
^
TabError: inconsistent use of tabs and spaces in indentation


^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ (l'evidenziazione l'ho fatta io)




Se io commento entrambe le righe viola il tutto funziona perfettamente ma la data di oggi è 202022.

Ho controllato 30 volte gli spazi e sono corretti.




Python mi demoralizza con questi errori del .... cavolo.




Qualcuno mi dica che sono "mona" (sono veneto).




Grazie




Alberto










--- Ultima modifica di trescon in data 2020-02-02 20:09:40 ---

--- Ultima modifica di trescon in data 2020-02-02 20:10:28 ---

--- Ultima modifica di trescon in data 2020-02-02 20:15:42 ---
------
Alberto
Ciao caro, l'errore che ti sta dando Python, è perché stai usando spazi e tab insieme, mandi in confusione l'interprete.

Però a parte questo, sulla data non fare quella brutta cosa, non si può vedere. Per formattare la data, usa la semplicità.

>>> from datetime import datetime
>>> datetime.strftime(datetime.today(), "%Y%m%d")
'20200202'


Cya

Daniele aka Palmux said @ 2020-02-02 20:32:50:
Ciao caro, l'errore che ti sta dando Python, è perché stai usando spazi e tab insieme, mandi in confusione l'interprete.

Però a parte questo, sulla data non fare quella brutta cosa, non si può vedere. Per formattare la data, usa la semplicità.

>>> from datetime import datetime
>>> datetime.strftime(datetime.today(), "%Y%m%d")
'20200202'


Cya


Grazie Daniele, io una cosa del genere l’avevo provata (simile) ma mi dava il mese è il giorno con una sola cifra.
Ok che possa essere brutto, non lo nego, ma perché quell’errore ? Ho riscritto la riga almeno 10 volte.... e se mi capita la stessa cosa con un programma grosso.... 4/5000 righe ... come ne esco ?

------
Alberto
Non è che ci sia molto da demoralizzarsi... "TabError" è piuttosto specifico... evidentemente ti è scappata una tabulazione nel codice... (Suggerimento... capita soprattutto quando si copia-e-incolla codice preso da internet... soprattutto i posti dei forum... eh eh).


Ora, quasi tutti gli editor un po' seri hanno l'opzione di convertire automaticamente le tabulazioni in spazi (4 spazi, o quelli che vuoi tu)

https://leanpub.com/capirewxpython : Capire wxPython, il mio libro
https://pythoninwindows.blogspot.com : Python in Windows, il mio blog e le mie guide
Non è che ci sia molto da demoralizzarsi... "TabError" è piuttosto specifico... evidentemente ti è scappata una tabulazione nel codice... (Suggerimento... capita soprattutto quando si copia-e-incolla codice preso da internet... soprattutto i posti dei forum... eh eh).


Ora, quasi tutti gli editor un po' seri hanno l'opzione di convertire automaticamente le tabulazioni in spazi (4 spazi, o quelli che vuoi tu)


... Peccato che il codice (è per quello che fa schifo) lo abbia scritto io.... ma il problema riguarda solo le righe evidenziate, se io le commento .... funziona tutto.

Il mio cruccio sta proprio in quel " perchè cacchio" si comporta cosi ?

Come editor uso Geany , che per quel poco che me ne intendo ... funziona e mi piace.

C'è qualche editor che mi fa vedere gli spazi "farlocchi" ?




Grazie

Alberto

------
Alberto
...e allora si vede che ogni tanto ti scappa un "tab" in mezzo... probabilmente quando vai a capo e il tuo editor rientra automaticamente la riga (per esempio dopo un "due punti"), allora il tuo editor rientra con un "tab" invece che con quattro spazi e tu non te ne accorgi.


Ora, in genere gli editor seri non usano più il tabulatore per i rientri automatici, da anni ormai. Di default usano gli spazi. In ogni caso deve esserci la possibilità, cercando nelle impostazioni, di dire all'editor di usare gli spazi invece delle tabulazioni.


E tutti gli editor ti fanno vedere la distinzione tra spazi e tabulazioni, ci mancherebbe... come minimo dovrebbe essere sufficiente evidenziare (selezionare) la porzione di testo che ti interessa per vedere i caratteri invisibili...




https://leanpub.com/capirewxpython : Capire wxPython, il mio libro
https://pythoninwindows.blogspot.com : Python in Windows, il mio blog e le mie guide
Come editor uso Geany , che per quel poco che me ne intendo ... funziona e mi piace.

C'è qualche editor che mi fa vedere gli spazi "farlocchi" ?
Non sono "farlocchi", sono mischiati alle tabulazioni, comunque praticamente tutti gli editor ti permettono di visualizzare spazi e tabulazioni, anche Geany lo fa.

Se vai nelle preferenze, trovi sicuramente la possibilità di evidenziare tab (anzi dovresti già vederli) e spazi bianchi. Nel codice te ne accorgi immediatamente, perché il tab lo visualizzi come una freccia a destra, mentre gli spazi sono dei singoli puntini.

Hai in Geany anche una linguetta dedicata all'indentazione, dove puoi scegliere cosa usare (usa gli spazi, meglio se 4) e dove ti suggerisce che puoi applicare l'indentazione preferita a tutto il progetto.

Cya



Pagina: 1



Esegui il login per scrivere una risposta.