我正在创建一个程序,它可以得到一个数字的所有因子(包括它的负对应物),用于理性根定理目的。
我成功地获得了积极的根源,但我似乎无法将负面的根添加到我的列表中,它只是需要输入。这是代码。
a = input("Number:")
c = []
for b in (1,a+1):
if a%b == 0:
c.append(b)
for d in c:
e = (-1)*d
c.append(d)
print c
所以我尝试删除" c.append(d)"部分并用" print e"替换它。它印刷了消极因素。
答案 0 :(得分:1)
1 st ,永远不会修改列表,因为你在它上面循环,总是很有可能发生不好的事情。
2 nd ,您致电for b in (1,a+1)
,range
之前需要 (1, a+1)
,因此:{{1 }}
3 rd ,如果for b in range(1,a+1)
提供正确的信息,则print e
必须包含您要添加的内容。因此,您只需在e
下添加c.append(e)
。
4 th ,您使用c.append(d)
让我认为您正在使用python2.x。但是,如果此 ,请考虑使用input()
而不是int(raw_input())
。如果您不使用python2.x,并使用python3.x,则将input()
投射到int()
以制作input()
。
int(input())
答案 1 :(得分:0)
你附加了错误的变量。试试这个:
a = int(input("Number: "))
c = []
for b in range(1, a+1):
if a % b == 0:
c.append(b)
for d in c:
e = -1 * d
c.append(e) # append the negated number instead of the original...
是的,修改你正在迭代的列表是一个坏主意。请尝试使用临时列表。
答案 2 :(得分:0)
这可能更容易阅读
a = input("Number:")
positives = []
for i in range(1, a+1):
if a % i == 0:
positives.append(i)
negatives = [-x for x in positives]
print 'positives:', positives
print 'negatives:', negatives
答案 3 :(得分:0)
在这里,你永远地追逐你的尾巴。因为您要为每次迭代添加一个新项目。即。你正在循环“实时”c,而不是循环开始时的快照。
for d in c:
e = (-1)*d
c.append(d)
更简单的用列表理解替换它
c += [-d for d in c]
这是一个片段,显示了即时扩展c
的问题
>>> for d in c:
... print -d
... c.append(-d)
...
-1
-2
-3
-4
-5
1
2
3
4
5
-1
-2
-3
-4
-5
1
2
3
4
5
-1
-2
-3
-4
-5
1
2
3
4
5
-1
-2
-3
-4
-5