现在的位置: 首页 > 综合 > 正文

Python入门coding之一:2去了哪里?

2014年02月15日 ⁄ 综合 ⁄ 共 852字 ⁄ 字号 评论关闭

闲来无事,在python2.4的手册里找到一段代码:

>>> for n in range(2, 10):
...     for x in range(2, n):
...         if n % x == 0:
...             print n, 'equals', x, '*', n/x
...             break
...     else:
...         # loop fell through without finding a factor
...         print n, 'is a prime number'
...

手册上的输出结果是:

2 is a prime number
3 is a prime number
4 equals 2 * 2
5 is a prime number
6 equals 2 * 3
7 is a prime number
8 equals 2 * 4
9 equals 3 * 3

我在Eclipse里按装了PyDev,采用了Python3.3的解释环境,代码如下:

#!/usr/bin/env python3.3
#--encoding-utf8--
#2~10以内的素数
for n in range(2,10):
    for x in range(2,n):
        if n % x == 0:
            print(n,'equals',x,'*',n/x)
            break
        else:
            #loop fell through without finding a factory
            print(n,'is a prime number')
            break
    

我的输出结果如下:

3 is a prime number
4 equals 2 * 2.0
5 is a prime number
6 equals 2 * 3.0
7 is a prime number
8 equals 2 * 4.0
9 is a prime number

这里有两个问题:

1、为何原书里else这段suite里没有break?(python3.3里如果没有break,素数时会输出多次)

2、在后面的代码输出里,素数2去了哪里?

初学乍练,久思不得其解,有明白的大侠请指点一二,不胜感激。

另,为了查明range(2,10)的范围,特地作了如下测试:

# test range function
for i in range(2,10):
    print(i)

输出结果如下:

2
3
4
5
6
7
8
9

抱歉!评论已关闭.