PDA

View Full Version : [PYTHON] Domanda stupida?


basty
22-06-2006, 05:45
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...

basty
22-06-2006, 08:12
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.

basty
22-06-2006, 08:19
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"

basty
22-06-2006, 18:46
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

mynos79
22-06-2006, 19:03
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.

marco.r
22-06-2006, 22:11
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