我尝试编写一个函数来计算数字位数,顺便说一下,我尝试比较不同方式的效率。1.lenstr(i)方式:
def nDigits(i):
return len(str(i))
for i in range(100000):
print nDigits(i)
大约需要 143.75s
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.43s
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.07s
C是否比python好2000倍......或者python有更好的方法来计算数字。thx伙计们,请帮助我。