View Full Version : [PYTHON] Domanda stupida?
Python 2.4.3 (#1, Apr 4 2006, 22:44:32)
[GCC 3.3.6] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> i = 0
>>> len(str(i))
1
>>> i = 10
>>> len(str(i))
2
>>> i = 01
>>> len(str(i))
1
>>> i = 010
>>> len(str(i))
1
>>> i = 100
>>> len(str(i))
3
>>>
Ma... secondo voi non è strana sta cosa?
come faccio a contare le cifre di un numero se si comporta cosi?
ciao
Stiwy.NET
22-06-2006, 08:01
Python 2.4.3 (#1, Apr 4 2006, 22:44:32)
[GCC 3.3.6] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> i = 0
>>> len(str(i))
1
>>> i = 10
>>> len(str(i))
2
>>> i = 01
>>> len(str(i))
1
>>> i = 010
>>> len(str(i))
1
>>> i = 100
>>> len(str(i))
3
>>>
Ma... secondo voi non è strana sta cosa?
come faccio a contare le cifre di un numero se si comporta cosi?
ciao
Beh, è normale... io python non lo conosco, ma anche su VB è così... perchè i è di tipo numerico e, quindi, cancella automaticamente gli zeri iniziali perchè inutili. Se vuoi fare il length di 010 devi convertirlo in stringa...
Beh.. si. Hai ragione però in python la funzione str(x) restituisce il valore x sotto forma di stringa... quindi?
hola
cdimauro
22-06-2006, 08:15
Con lo 0 davanti 010 è rappresentato come numero ottale, per cui i non vale 10 (decimale), ma 8.
in questo caso però non vale...
i = 063
len(str(i))
2
...
cdimauro
22-06-2006, 10:30
Vale ancora: 63 in ottale equivale a 51 decimale. ;)
Stiwy.NET
22-06-2006, 10:52
in questo caso però non vale...
i = 063
len(str(i))
2
...
Ripeto: usa le stringhe... i = "063"
Scusate se mi dilungo ancora...
vi dico per intero il mio problema:
diciamo che abbiamo un stringa di nome
"miciomiciobaubau001"
e diciamo che io voglio incrementare il valore numerico alla sua fine
"miciomiciobaubau002"
"miciomiciobaubau003"
etc
dapprima affetto gli ultimi 3 caratteri
"001"
li converto in numeri con la funzione int(x)
ci sommo 1
ristrasformo il tutto in stringa
"002"
e lo "incollo" alla stringa iniziale
"miciomiciobaubau002"
Questo è quello che vorrei fare ma quando faccio la conversione mi perdo qualche zero per strada.
Scusate ancora se approfitto ma non so dove sbattere la testa. :muro:
ciao
Purtroppo so pochissimo il Python ...
Comunque quando converti la stringa "001" in numero 1, poi riconverti l' 1 in stringa --> "1", controlli la lunghezza della stringa e se = 1 allora ci aggiungi all' inizio due zeri, se = 2 allora ci aggiungi all' inizio uno zero, se = 3 non fai niente perchè già di lunghezza giusta.
Anche in vb e c# quando devo usare certi metodi, sfrutto questa piccola funzione che mi sono fatto.
Scusate se mi dilungo ancora...
vi dico per intero il mio problema:
diciamo che abbiamo un stringa di nome
"miciomiciobaubau001"
e diciamo che io voglio incrementare il valore numerico alla sua fine
"miciomiciobaubau002"
"miciomiciobaubau003"
etc
dapprima affetto gli ultimi 3 caratteri
"001"
li converto in numeri con la funzione int(x)
ci sommo 1
ristrasformo il tutto in stringa
"002"
e lo "incollo" alla stringa iniziale
"miciomiciobaubau002"
Questo è quello che vorrei fare ma quando faccio la conversione mi perdo qualche zero per strada.
Scusate ancora se approfitto ma non so dove sbattere la testa. :muro:
ciao
Formatta direttamente la stringa.
Ad esempio:
for n in range(10):
print "miciomiciobaubau%03d" % n
un link alla documentazione relativa:
http://docs.python.org/lib/typesseq-strings.html
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.