python中的三角形数字

时间:2013-10-30 10:38:08

标签: python list python-3.x

我想计算一个三角形数的除数。这是我的尝试。

tn = 0
list1 = []
for counter in range(1,8):
    tn=tn+counter
    for i in range(1,counter):
        if(tn%i==0):
            list1.append(i)
    print(list1)

我想将除数发送到列表并计算该列表中的元素数。但是这个程序没有给出正确的输出。请帮我解决这个问题。

 1: 1           #of elements 1
 3: 1,3         #of elements 2
 6: 1,2,3,6     #of elements 4
10: 1,2,5,10    #of elements 4
15: 1,3,5,15    #of elements 4

2 个答案:

答案 0 :(得分:1)

您可以使用list comprehension

def getDivisors(inputNum):
    result = [i for i in range(2, inputNum // 2 + 1) if inputNum % i == 0]
    result.insert(0, 1)
    if inputNum not in result: result.append(inputNum)
    return result

print getDivisors(1)
print getDivisors(3)
print getDivisors(6)
print getDivisors(10)
print getDivisors(15)

<强>输出

[1]
[1, 3]
[1, 2, 3, 6]
[1, 2, 5, 10]
[1, 3, 5, 15]

[i for i in range(2, inputNum // 2 + 1) if inputNum % i == 0]

相同
result = []
for i in range(2, inputNum // 2 + 1):
    if inputNum % i == 0:
        result.append(i)

答案 1 :(得分:1)

我改变了你的for循环,并添加了一个额外的while循环来使它工作。

tn = 1
increase=2
numbers=[]
divisor=[]
i=0

while i<15:
 tn+=increase
 numbers+=[tn]
 increase+=1
 i+=1

for i in numbers:
 divisor+=[i]
 print(i,":", divisor)

我使代码工作到第15个三角形数字不包括1. while循环是非常明显的,它只是计算出下一个三角形数字并将其添加到变量数字。我的第二个循环 - for循环 - 遍历numbers中的数字,并将每个数字添加到变量divisor。每次发生这种情况时,解释器都会打印当前三角形编号及其所有前任 - 这就是您要求的内容。

运行代码并亲自查看,但下次在问别人之前仔细考虑一下,这是一个相当简单的任务。

另外,如果你要添加一个已经初始化的变量,你不需要编写variable=variable+n,只需将其缩短为variable+=n,并且永远不要在条件语句周围加上括号2或Python 3(你只能用Java,Javascrip,C和C ++等语言编写)