首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有跳出for循环

没有跳出for循环
EN

Stack Overflow用户
提问于 2011-12-24 20:49:27
回答 4查看 1.2K关注 0票数 0

由于某种原因,当候选数字达到21时,它意识到21可以被3整除,但随后不会跳出For循环/相反,例如25,是注释25可被5整除然后爆发。

特别是,当div == 3的时候,它不会跳出循环。为什么会这样呢?

代码语言:javascript
复制
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.'

以下是代码的输出:

代码语言:javascript
复制
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
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-12-24 20:58:54

for循环不是while循环。

在Python中,for循环的唯一类型是在其他语言中称为“foreach”-它遍历元素列表。在你的例子中,你正在迭代一个范围,即一个从3到y+2的整数列表。决定迭代何时停止的是列表中元素的数量,而不是其中任何一个元素的值。当您在循环的一次迭代中更改div时,这对其余项没有影响。

如果满足某个条件,则可以使用break跳出循环。或者,如果您想保留您的逻辑,您可以尝试使用while,但随后您将需要手动递增计数器。

票数 4
EN

Stack Overflow用户

发布于 2011-12-24 20:51:50

在代码中的任何位置都没有break语句。

票数 1
EN

Stack Overflow用户

发布于 2011-12-24 21:02:09

Python循环不是这样工作的:

代码语言:javascript
复制
#!/usr/bin/env python
for a in range(1,20):
        print a
        a = 39

考虑一下:

代码语言:javascript
复制
for a in [32,14,"a",False]:
        print a
        a = True

例如。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8624620

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档