由于某种原因,当候选数字达到21时,它意识到21可以被3整除,但随后不会跳出For循环/相反,例如25,是注释25可被5整除然后爆发。
特别是,当div == 3的时候,它不会跳出循环。为什么会这样呢?
for cand in range (3,100):
if cand%2 != 0:
if ((cand ==3) or (cand ==5) or (cand ==7) or (cand ==11) or (cand == 13)):
print str(cand) + ' is prime.'
else:
x = sqrt(cand)
y= int (x)
for div in range(3, (y+2)):
if (cand%div == 0):
print div
print str(cand) + ' is divisible by' + str(div)
div = 10*y
elif (div == y):
print str(cand) + ' is prime.'以下是代码的输出:
3 is prime.
5 is prime.
7 is prime.
3
9 is divisible by3
11 is prime.
13 is prime.
3
15 is divisible by3
17 is prime.
19 is prime.
3
21 is divisible by3
21 is prime.
23 is prime.
5
25 is divisible by5
3
27 is divisible by3
27 is prime.
29 is prime.
31 is prime.
3
33 is divisible by3
33 is prime.
5
35 is divisible by5
37 is prime.
3
39 is divisible by3
39 is prime.
41 is prime.
43 is prime.
3
45 is divisible by3
5
45 is divisible by5
45 is prime.
47 is prime.
7
49 is divisible by7
3
51 is divisible by3
51 is prime.
53 is prime.
5
55 is divisible by5
55 is prime.
3
57 is divisible by3
57 is prime.
59 is prime.
61 is prime.
3
63 is divisible by3
7
63 is divisible by7
5
65 is divisible by5
65 is prime.
67 is prime.
3
69 is divisible by3
69 is prime.
71 is prime.
73 is prime.
3
75 is divisible by3
5
75 is divisible by5
75 is prime.
7
77 is divisible by7
77 is prime.
79 is prime.
3
81 is divisible by3
9
81 is divisible by9
83 is prime.
5
85 is divisible by5
85 is prime.
3
87 is divisible by3
87 is prime.
89 is prime.
7
91 is divisible by7
91 is prime.
3
93 is divisible by3
93 is prime.
5
95 is divisible by5
95 is prime.
97 is prime.
3
99 is divisible by3
9
99 is divisible by9发布于 2011-12-24 20:58:54
for循环不是while循环。
在Python中,for循环的唯一类型是在其他语言中称为“foreach”-它遍历元素列表。在你的例子中,你正在迭代一个范围,即一个从3到y+2的整数列表。决定迭代何时停止的是列表中元素的数量,而不是其中任何一个元素的值。当您在循环的一次迭代中更改div时,这对其余项没有影响。
如果满足某个条件,则可以使用break跳出循环。或者,如果您想保留您的逻辑,您可以尝试使用while,但随后您将需要手动递增计数器。
发布于 2011-12-24 20:51:50
在代码中的任何位置都没有break语句。
发布于 2011-12-24 21:02:09
Python循环不是这样工作的:
#!/usr/bin/env python
for a in range(1,20):
print a
a = 39考虑一下:
for a in [32,14,"a",False]:
print a
a = True例如。
https://stackoverflow.com/questions/8624620
复制相似问题