我想计算一个三角形数的除数。这是我的尝试。
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
答案 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 ++等语言编写)