问题描述:编写函数,给定一个任意长度整数,返回每位数字,例如给定1234则返回(1, 2, 3, 4)。问题本身并不复杂,主要演示Python运算符和内置函数的用法和技巧,感谢浙江永嘉教师发展中心应根球老师提供的思路和代码原始版本。
from timeit import Timer
from random import randint
def demo1(value):
result = []
#按从最低位(个位)到最高位的顺序获取每位数字
while value:
result.append(value % 10)
value = value // 10
#逆序,按正常的顺序返回
result.reverse()
return result
def demo2(value):
result = []
while value:
#divmod()是内置函数,返回整商和余数组成的元组
value, r = divmod(value, 10)
result.append(r)
result.reverse()
return result
def demo3(value):
#字符串是Python不可变序列的一种
return list(map(int, str(value)))
def main():
#随机生成一个数字
value = randint(1, 1000000000000000000000000000)
print(value)
#测试次数
times = 10000000
#分别测试3种方法的运行时间
print(Timer(repr(demo1(value)), 'from __main__ import demo3').timeit(times))
print(Timer(repr(demo2(value)), 'from __main__ import demo3').timeit(times))
print(Timer(repr(demo3(value)), 'from __main__ import demo3').timeit(times))
main()