>>>import math
>>>for i in range(50,100+1):
. . . for t in range(2,int(math.sqrt(i))+1):
. . . if i % t ==0:
. . . break
. . . else:
. . . print i
为什么用这程序去求解50至100间的素数,输出结果是 100 列?感觉程序没啥问题啊
用if语句求解50至100之间的全部素数
-
- 帖子: 5
- 注册时间: 2009-07-19 19:02
- millenniumdark
- 论坛版主
- 帖子: 4159
- 注册时间: 2005-07-02 14:41
- 系统: Ubuntu 14.04 (Kylin)
- 联系:
Re: 用if语句求解50至100之间的全部素数
不知道你的縮進是怎麼樣的,使用code標簽可以保留縮進,猜想你的縮進是這樣的:
這個得出的結果就是你所說的打印range(50,101)。
如果這樣縮進:(注意else語句的位置,上面的縮進else語句是if block的else語句,而下面的縮進else語句是for block的else語句)
輸出結果是:
python裡面縮進是很重要的。
代码: 全选
import math
for i in range(50,100+1):
for t in range(2,int(math.sqrt(i))+1):
if i % t ==0:
break
else:
print i
如果這樣縮進:(注意else語句的位置,上面的縮進else語句是if block的else語句,而下面的縮進else語句是for block的else語句)
代码: 全选
for i in range(50,100+1):
for t in range(2,int(math.sqrt(i))+1):
if i % t ==0:
break
else:
print i
代码: 全选
53
59
61
67
71
73
79
83
89
97
-
- 帖子: 5
- 注册时间: 2009-07-19 19:02
Re: 用if语句求解50至100之间的全部素数
呵呵 是缩进错误 谢谢指教 !!!!
才发现我借的这本书上蛮多缩进错误的
新手 刚开始学两三天 都不咋会咯
才发现我借的这本书上蛮多缩进错误的
新手 刚开始学两三天 都不咋会咯
-
- 帖子: 5
- 注册时间: 2009-07-19 19:02
Re: 用if语句求解50至100之间的全部素数
代码: 全选
import math
for i in range(50,100+1):
for t in range(2,int(math.sqrt(i))+1):
if i % t ==0:
break
else:
print i
- millenniumdark
- 论坛版主
- 帖子: 4159
- 注册时间: 2005-07-02 14:41
- 系统: Ubuntu 14.04 (Kylin)
- 联系:
Re: 用if语句求解50至100之间的全部素数
哦,是这样缩进的。我猜错了。:-)
原书上这样缩进的确是输出100。else语句是属於第一层for循环的,else语句最后执行,输出的是range(50,100+1)的最后一个值。
书排版的时候很容易出缩进错误,要命的是python里面缩进很关键。看来python不是print-error-proof啊。:)
原书上这样缩进的确是输出100。else语句是属於第一层for循环的,else语句最后执行,输出的是range(50,100+1)的最后一个值。
书排版的时候很容易出缩进错误,要命的是python里面缩进很关键。看来python不是print-error-proof啊。:)
-
- 帖子: 17
- 注册时间: 2009-07-23 21:04
Re: 用if语句求解50至100之间的全部素数
else 顶到最前面也是错误的
-
- 帖子: 23
- 注册时间: 2009-03-22 16:55
Re: 用if语句求解50至100之间的全部素数
这样缩进输出结果为する夜の雨 写了:那本书上是这样缩的...代码: 全选
import math for i in range(50,100+1): for t in range(2,int(math.sqrt(i))+1): if i % t ==0: break else: print i
100
>>> for i in range(50,100+1):
for t in range(2,int(math.sqrt(i))+1):
if i % t ==0:
break
else:#和第二个for对齐。
print (i, end=' ')
53 59 61 67 71 73 79 83 89 97
>>> for i in range(50,100+1):
for t in range(2,int(math.sqrt(i))+1):
if i % t ==0:
break
else:#和if对齐。
print (i, end=' ')
51 53 53 53 53 53 53 55 55 55 57 59 59 59 59 59 59 61 61 61 61 61 61 63 65 65 65 67 67 67 67 67 67 67 69 71 71 71 71 71 71 71 73 73 73 73 73 73 73 75 77 77 77 77 77 79 79 79 79 79 79 79 81 83 83 83 83 83 83 83 83 85 85 85 87 89 89 89 89 89 89 89 89 91 91 91 91 91 93 95 95 95 97 97 97 97 97 97 97 97 99
缩进不同结果不同!!!