python - For循环获取素数
问题描述
我刚开始接触 Python,所以我的知识还很菜鸟。
无论如何,我在网上找到了这个例子:
for num in range(10,20): #to iterate between 10 to 20
for i in range(2,num): #to iterate on the factors of the number
if num%i == 0: #to determine the first factor
j=num/i #to calculate the second factor
print(f"{num} equals {i} * {j}")
break #to move to the next number, the #first FOR
else: # else part of the loop
print(f"{num} is a prime number")
break
这是示例的结果:
10 equals 2 * 5
11 is a prime number
12 equals 2 * 6
13 is a prime number
14 equals 2 * 7
15 equals 3 * 5
16 equals 2 * 8
17 is a prime number
18 equals 2 * 9
19 is a prime number
不幸的是,通过在 Jupyter 上运行该代码,它返回:
10 equals 2 * 5
11 is a prime number
12 equals 2 * 6
13 is a prime number
14 equals 2 * 7
15 is a prime number ### THIS IS THE ERROR
16 equals 2 * 8
17 is a prime number
18 equals 2 * 9
19 is a prime number
我在这里真的找不到错误,有什么建议吗?
解决方案
我猜你的尝试是
for num in range(10, 20):
for i in range(2, num):
if num % i == 0:
j = num / i
print(f"{num} equals {i} * {j}")
break
else:
print(f"{num} is a prime number")
break
而正确的代码必须像
for num in range(10, 20):
for i in range(2, num):
if num % i == 0:
j = num / i
print(f"{num} equals {i} * {j}")
break
else:
print(f"{num} is a prime number")
注意(i)从句的不同缩进级别else
,以及(ii)没有第二个break
。您可能需要更加小心 python 中的缩进。
这里,else
属于for
,不是if
(这种区别是通过缩进实现的)。为此,此文档可能会有所帮助。总之,for ... else
行为是这样的:一旦for
循环结束,else
part 就会被执行,除非循环被 a 终止break
。
推荐阅读
- c++ - C++ 解引用指针。为什么会发生这种变化?
- android - 如何有意图地在whatsapp中打开特定号码的对话
- java - freeMemory() 和 totalMemory() 的区别
- php - PHP APC:缓存被进程锁定,只能同步工作
- css - 单元格中的CSS网格响应图像
- java - 为什么我可以使用 UCanAccess 恢复已删除的记录?
- asp.net-core-webapi - 尽管有 VS 2017 预览版,但 ASP.NET Core Web API 模板中没有个人用户帐户身份验证选项
- python - Kmeans 可视化错误 - 不可散列的类型:'numpy.ndarray'
- abap - BAPI_SALESORDER_CHANGE 不进行更改
- networking - apache2 无法从外部访问他的 IP