Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

Do you need help?

Notice Board

Per partecipare al corso di Fondamenti di programmazione 2023-24 loggatevi e attivatelo nella vostra pagina dei corsi preferiti. A quel punto il corso appare nel menù personale cliccando sul proprio avatar. Per i materiali degli anni precedenti seguite lo stesso metodo.

To join the Programming/Lab 2023-24 course, log-on and select it on the my courses page. It will appear on the personal menu of your avatar. For earlier years use the same method.

Convertire in stringa un numero che inizia per 0?

E
ErCzech (550 points)
1 8 17
in Programmare in Python by (550 points)
closed by
Ho notato che non si può convertire in stringa un intero la cui sintassi inizia per 0 (es. 010, ovvero dieci), in quanto ritorna l'errore "invalid token".

Qualcuno mi saprebbe risolvere il problema? Gliene sarei molto grato.
3.3k views
closed with the note: answered

4 Answers

Best answer
francesco.dev (33560 points)
22 51 129
by (33.6k points)
selected by

Ciao ErCzech!

Ho appena provato a convertire una stringa che rappresenta un numero in un intero e lo faccio senza problemi.

Esempio:
stringa = '010'
numero = int(stringa)

Ciò che contiene il numero è esattamente il numero 10, presente nella stringa.
Come puoi vedere, anche se ci sono degli 0 prima del suddetto numero, facendo la conversione non si creano assolutamente problemi!

Ricorda, infine, che un numero intero che contiene degli 0 all'inizio è uguale al numero senza tali zeri, quindi:
Esempio:
numero = 030 è come dire numero = 30 e quindi lo esprimerai come 30 e non 030!
Perché con lo 0 davanti è normale che ti dia problemi.
stringa = str(numero) te la converte senza problemi!

Infine ti ricordo che il professore ha detto che i numeri vanno da 0 a 999.999.999.999 miliardi, quindi non troverai mai un numero espresso come tanti zeri prima del numero stesso, non avrebbe senso!

Sperando di averti aiutato,
- Francesco Pio Scognamiglio

E
ErCzech (550 points)
1 8 17
by (550 points)
Nono ma il problema me lo dava a convertire il numero intero in stringa, non viceversa!
Però nella seconda parte della risposta mi hai aiutato, grazie!
francesco.dev (33560 points)
22 51 129
by (33.6k points)
Rileggi la risposta, forse ho centrato il punto!
francesco.dev (33560 points)
22 51 129
by (33.6k points)
Se pensi abbia risolto il tuo problema, ricorda di scegliere la mia risposta come migliore cosicché chiunque apra questa question possa vederla e risolvere lo stesso problema!
E
ErCzech (550 points)
1 8 17
by (550 points)
Sìsì mi bastava che mi dicevi che è normale dia problemi con lo 0 prima e non è aggirabile. Sai com'è, gli input spesso devono essere il più a prova di portatore di deficit possibile. Grazie comunque per la completezza e l'immediatezza, best rated 10/10.
francesco.dev (33560 points)
22 51 129
by (33.6k points)
Di nulla! Sempre disponibile a dare una mano! Non esitare a chiedere :)
francesco.dev (33560 points)
22 51 129
by (33.6k points)
Ciao ErCzech, ho notato che è stata tolta la mia risposta come migliore. Se pensi ancora lo sia, ti chiedo gentilmente di riselezionarla
Grazie e sempre disponibile per aiutarti!
- Francesco Pio Scognamiglio
e
en (1240 points)
3 8 18
by (1.2k points)
Ciao,

credo che il problema risieda nell'impossibilità di creare un intero che inizi per zero ( a meno che dopo lo zero non ci sia una virgola), infatti da lo stesso problema anche se fai a = 010. Però se vuoi creare una stringa con un numero che inizi con zero puoi cerarti una stringa con zero e poi sommarla a quella con il numero.

Spero di esserti stata utile
Stefaniscion (1370 points)
6 15 32
by (1.4k points)

Ciao!
Mi ero posto il tuo stesso problema.
https://stackoverflow.com/questions/36386346/syntaxerror-invalid-token
Come puoi leggere dalle risposte qui, in python (e in matematica in generale) un numero con uno 0 davanti non ha significato.

Probabilmente anche in virtù del fatto che in Python2 la notazione con lo 0 davanti veniva utilizzata per l'ottale, quindi "04" era l'equivalente del attuale "0o4"

Nel caso puoi raggirare passando il numero come stringa e poi convertendolo in intero, quindi

n=int("04")

Spero di averti, se non aiutato, almeno chiarito un dubbio ^^

E
ErCzech (550 points)
1 8 17
by (550 points)
Avoglia, molto interessante!
andrea.sterbini (207940 points)
756 1270 2377
by (208k points)

In python esistono solo 3 tipi di numeri che possono iniziare col carattere 0

  • numeri con la virgola (va da sè)
  • numeri esadecimali, nel formato 0x<cifre> in cui le cifre possono essere 0123456789ABCDEF
  • numeri ottali, nel formato 0o<cifre> in cui le cifre possono essere 01234567

I numeri interi non possono iniziare con 0, da cui il "invalid token" error quando provi a farli digerire al parser python