附加负数(Python)

时间:2014-09-18 03:11:25

标签: python append

我正在创建一个程序,它可以得到一个数字的所有因子(包括它的负对应物),用于理性根定理目的。

我成功地获得了积极的根源,但我似乎无法将负面的根添加到我的列表中,它只是需要输入。这是代码。

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"替换它。它印刷了消极因素。

4 个答案:

答案 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)让我认为您正在使用。但是,如果此 ,请考虑使用input()而不是int(raw_input())。如果您使用,并使用,则将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