【发布时间】:2013-05-26 17:16:10
【问题描述】:
对于我的一生,我无法弄清楚为什么我的 IF 语句没有被击中。在很多情况下,n 的余数 // 最后一个放在结果列表中的数字是 0。
n = 100
numbers = range(2, n)
results = []
results.append(numbers.pop(0))
print numbers
for n in numbers:
if n % results[-1] == 0:
print "If statement", numbers
numbers.remove(n)
else:
print "Else statement", numbers
numbers.remove(n)
【问题讨论】:
-
尝试在 for 和 if 之后添加调试输出,例如
print nprint results[-1] -
您正在从
numbers中删除项目,同时对其进行迭代。这将导致错误,因为迭代器计数器无论如何都会增加,并且您的循环将“跳过”项目。 -
调用
list.remove会导致列表中的副作用 - 这会导致什么奇怪的事情?我会用remove重写这个不 - 删除东西的反面是保留那些应该保留的东西:D在两个分支中删除似乎也很奇怪(=删除所有东西),但是..跨度>
标签: python