我需要编写一个函数来查找负数的因子并将它们输出到列表中。我该怎么办?我可以让我的函数做正数(见下文),但不是负数。
#Finds factors for A and C
def factorspos(x):
factorspos = [1,-6];
print("The factors of",x,"are:")
for i in range(1, x + 1):
if x % i == 0:
factorspos.append(i)
print(i)
我尝试更改循环计数的值,因此它会从所选的数字计算为1(下面的代码),但仍然没有产生任何结果:(
#Finds factors for A and C
def factorspos(x):
factorspos = [int(-6),1];
print("The factors of",x,"are:")
for i in range(int(-6), x + 1):
if x % i == 0:
factorspos.append(i)
print(i)
我已将Cco更改为固定数字。
#Finds factors for A and C
def factorspos(x):
Cco = -6
factorspos = [int(Cco),1];
print("The factors of",x,"are:")
for i in range(int(Cco), x + 1):
if x % i == 0:
factorspos.append(i)
print(i)
return factorspos
答案 0 :(得分:1)
def factorspos(x):
x = int(x)
factorspos = []
print("The factors of",x,"are:")
if x > 0: # if input is postive
for i in range(1,x+1):
if x % i == 0:
factorspos.append(i)
print(i)
return factorspos
elif x < 0: #if input is negative
for i in range(x,0):
if x % i == 0:
factorspos.append(i)
print(i)
return factorspos
print(factorspos(12)) #outputs [1, 2, 3, 4, 6, 12]
print(factorspos(-12)) #outputs [-12, -6, -4, -3, -2, -1]
你真的非常接近解决你的问题。我冒昧地为你所拥有的东西添加额外的功能。基本上我添加了一个condiction检查器来查看输入x
是正还是负,该函数做了两件不同的事情。他们做的是你提供的,但清理干净。
注意事项range()
从包含第一个数字的一个开始,并结束第二个参数之外的一个数字。 range(1,10)
会给你1到9.这就是为什么如果你看,范围从x到0的负部分,因为它会说x到-1。在积极部分,它将从1到x + 1,因为+1确保我们包括我们的输入。你知道的其余部分,你写的很好;如果没有随意提问。