数字の桁数を数える関数を書いてみたのですが、ちなみに別の方法の効率を比較してみました。1.lenstr(i) の方法:
def nDigits(i):
return len(str(i))
for i in range(100000):
print nDigits(i)
約143.75秒かかります
2.log10 の方法:
import math
def nDigits(i):
if i > 0:
n = int(math.log10(i)) + 1
elif i == 0:
n = 1
else:
n = int(math.log10(-i)) + 2
return n
for i in range(100000):
print nDigits(i)
約144.35秒かかります
3.分割方法:
def nDigits(i):
t = 0
while i > 0:
t += 1
i /= 10
return t
for i in range(100000):
print nDigits(i)
約143.43秒かかります
4.c の除算方法:
#include<stdio.h>
int digits(int num){
int i = 0;
while (num > 0){
i += 1;
num /= 10;
}
return i;
}
void main(){
int i = 0;
while (i < 100000){
i += 1;
printf("%d",digits(i));
}
}
約0.07秒かかります
C は python より 2000 倍優れていますか... または python が桁数を数えるより良い方法があります。thx みんな、助けてください。