我是python的新手,并且正在阅读一些预先编写的代码以更好地掌握它。 此代码尝试获取每个非终止周期在数字分母为1时的数字位数。例如, 1/3 = 0(3)有否1. 与之相似7一个周期具有6为1/7 = 0。(142856)python代码解释reqd
def get_decimals(num, div, current=([], [])):
"""Return a tuple (integer_part, decimal_part, cycle_length) for num/div"""
headtail = lambda lst: (lst[0], lst[1:])
memory, values = current
if values and num == 0:
integer, decimals = headtail(values)
return integer, decimals, 0
elif num in memory:
integer, decimals = headtail(values)
print integer, decimals
lencycle = len(memory) - memory.index(num)
return integer, decimals, lencycle
a, b = divmod(num, div)
return get_decimals(10*b, div, (memory+[num], values+[a]))
print max((get_decimals(1, num)[2], num) for num in xrange(2, 10))[1]
任何人都可以请解释我的上下文中,循环上面粘贴的代码。我无法理解以下内容:
上一个打印语句中的下标[2]和[1]。
memory.index(num)
这个里面的get_decimals函数在第4行到最后一行。