闲来无事,在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
转载请注明:XAMPP中文组官网 » Python入门coding之一:2去了哪里?