【发布时间】:2020-05-09 00:02:15
【问题描述】:
我正在关注 3Blue1Brown 在此处找到的在线 Youtube 视频:Youtube:3Blue1Brown,并且我正在使用他的查找素数的实现。您可以在视频中看到程序和他的第一组输出@1:10。
现在,他使用 Python v.3.7.0,而我使用 Python v.3.7.4。我安装了 Numpy,并且我的解释器集成到了 Window 的命令提示符中。我没有创建一个实际的 Python 文件,我只是在 Python 的解释器中直接运行代码。
这是程序和我的结果的整个命令提示符输出的副本...
C:\Users\skilz99>python
Python 3.7.4 (tags/v3.7.4:e09359112e, Jul 8 2019, 20:34:20) [MSC v.1916 64 bit
(AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> import math
>>>
>>> def get_primes(n_min, n_max):
... result = []
... for x in range(max(n_min, 2), n_max):
... has_factor = False
... for p in range(2, int(np.sqrt(x)) + 1):
... if x % p == 0:
... has_factor = True
... break
... if not has_factor:
... result.append(x)
... return result
...
>>> get_primes(0,50)
[5, 7, 9, 11, 11, 13, 13, 15, 17, 17, 17, 19, 19, 19, 21, 23, 23, 23, 25, 25, 25
, 27, 29, 29, 29, 29, 31, 31, 31, 31, 33, 35, 35, 35, 37, 37, 37, 37, 37, 39, 41
, 41, 41, 41, 41, 43, 43, 43, 43, 43, 45, 47, 47, 47, 47, 47, 49, 49, 49, 49, 49
]
>>>
为什么我得到的结果与他完全不同?我不知道是不是因为 Python 版本不同,还是他使用的 Numpy 版本与我的不同。但我想这样一个简单的程序应该会产生相同的结果。
【问题讨论】:
-
仔细查看代码后,我认为可能是由于缩进错误。 Python 没有将其检测为错误,因为它仍然是有效的 Python 代码,但执行了错误的缩进...我认为它不正确地解析代码并给我带来了不良结果...我将进行必要的编辑并查看如果它能解决我的问题!
-
这部分
if not has_factor:不应该在内循环之外吗? -
我提到了不正确的缩进,我用正确的缩进再次输入了程序,我得到了正确的值。是的,它应该是外循环的一部分,但在内循环之外!直到我发布了这个问题后,它才开始对我产生影响!
标签: python numpy math output primes