以下代码返回提醒列表的列表。由于某种原因,有时它会返回所有整数,而在其他情况下,它会返回整数与双精度的混合:
import itertools
def get_factors_list(n):
list=[]
curr_n = n
sqrt = int(n**0.5)+1
for i in range(2,sqrt):
if(curr_n%i==0):
l=[1]
count=0
while(curr_n%i==0):
count+=1
curr_n=curr_n/i
l.append(int(i**count))
list.append(l)
sqrt = int(curr_n**0.5)+1
if(curr_n==1):
return list
list.append([1,curr_n])
return list
num1=28
num2=140
l1=get_factors_list(num1)
l2=get_factors_list(num2)
print(l1) #[[1, 2, 4], [1, 7.0]] # note `7.0`
print(l2) #[[1, 2, 4], [1, 5], [1, 7]] # note `7`
导致这种差异的原因是什么?
P.S。我知道一个快速而肮脏的修复(int(al[i][j]
),但我问的是原因。