Dlaczego Python zmienia wartość liczby całkowitej, gdy przed nią znajduje się 0?
Zaimplementowałem funkcję konwertującą liczbę całkowitą na jej reprezentację jako ciągintToStr()
(kod poniżej).
Do testów przekazałem kilka wartości i zaobserwowałem nieoczekiwane wyjście:
print intToStr( 1223) # prints 1223 as expected
print intToStr(01223) # prints 659, surprisingly
Teraz próbowałem go zdebugować, a liczba, którą przekazałem, rzeczywiście się okazała659
.
Dlaczego tak się dzieje i jak mogę uzyskać, aby Python ignorował początkowe zera literałów całkowitych?
Oto kod mojej funkcji:
def intToStr(i):
digits = '0123456789'
if i == 0:
return 0
result = ""
while i > 0:
result = digits[i%10] + result
i /= 10
return result