def prime_func():
counter = 0
composites = [2]
primes = [3]
for x in range(4, 50):
for y in range(2, x):
a = x/y
if a - int(a) == 0:
composites = composites + [x]
else:
primes = primes + [x]
counter = counter + 1
if counter == args[1]:
return counter, composites, primes
else:
pass
prime_func()
counter1, composites1, primes1 = prime_func()
print(counter1)
仅供参考,这是我第一个正式的Python脚本。如果您需要上下文,一旦给定一个输入(我没有包括这个位,不要被args
部分混淆),它最终将计算第x个素数。你知道吗
运行此代码时,我收到错误消息NoneType object is not iterable
。我在网上看了一下,这个消息主要是在函数没有实际返回任何内容时给出的。有人能帮我把这个结构修好吗?你知道吗
最初counter
、composites
和primes
是在函数外部定义的,并作为输入提供,但我对此进行了更改,以查看是否有任何变化。你知道吗
我听说像这样的变量(全局?)不应该在函数内部设置。你知道吗
我假设在给定的范围0中没有足够的素数。。49,因此中断条件
counter == args[1]
永远不会应用,函数返回None。你知道吗最好将所有重要参数传递到一个函数中,不要使用硬编码常量,这会使函数更加灵活。你知道吗
要获得更有效的算法,请查看:https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes
在代码中,应该尝试在函数中每个可能的退出点返回值。如果所有的代码都到达了该点,并且没有返回或没有进一步的操作,那么它将作为None返回
与您的代码一样,如果代码完成for循环并且没有转到任何return语句,那么它将作为None返回
在一对点上缺少
break
。此外,这项工作在进行中不是质数查找在这一点上,它将简单地找到偶数和奇数,因为如何循环的结构。你知道吗相关问题 更多 >
编程相关推荐