Python 素数函数,返回函数

Python 素数函数,返回函数,python,primes,Python,Primes,为什么程序在这里看到问题? 当我删除其他内容时:我只有“none”作为输出,这很奇怪。如果,您需要在下添加一些内容。Python需要代码。如果不想在那里添加任何内容,可以使用pass 这将使您的代码如下所示: line 9 else: ^ IndentationError: expected an indented block 这里是更干净的版本; a) 已删除函数输出的打印,因为未返回任何输出 b) 跟踪primeDict(字典)中的所有素数 输出 def primes_nu

为什么程序在这里看到问题?
当我删除其他内容时:我只有“none”作为输出,这很奇怪。

如果,您需要在
下添加一些内容。Python需要代码。如果不想在那里添加任何内容,可以使用
pass

这将使您的代码如下所示:

line 9
    else:
    ^
IndentationError: expected an indented block
这里是更干净的版本; a) 已删除函数输出的打印,因为未返回任何输出 b) 跟踪primeDict(字典)中的所有素数

输出

def primes_number(number = 5):
    primesDict = {}
    for x in range(1, number):

        for y in range(2, x):

            if((number % x) != 0):
                if y in primesDict : continue
                primesDict[y] = x
                print(y)

print(primes_number(number=7))

您的代码中有多个错误:

2
3
4
5
print(primes_number())
至此,我们已经完成了
number
变量,它应该是
x%y

if((number % x) == 0):
else
属于
for
,而不是
if
。我将在下面演示

for y in range(2, x):
    if((number % x) == 0):
    else:
如果成功,我们应该打印
x
,而不是
y
,除数

        print(y)
无需在此处打印,因为
primes\u number()
不会返回任何内容,并且您已经在函数本身中完成了所有打印

这是一个对代码进行最小修改的工作版本:

2
3
4
5
print(primes_number())
我做了一次优化,只测试了整数平方根的除数

输出

def primes_number(number=30):
    for x in range(2, number):
        for y in range(2, int(x ** 0.5) + 1):
            if x % y == 0:
                break
        else:  # no break
            print(x)

primes_number()

如果
If
中没有任何内容,则必须在
If
主体中使用
pass
。Python不允许空块。在
if
中添加
pass
语句。重复:主
print
打印方法返回的内容,由于该方法没有
return
,因此从上下文中猜测该程序是关于素数的,4不是素数,不应该在
primeDict
中,也不应该打印。您的输出还包括一个尾随的
None
,上面未显示。
% python3 test.py
2
3
5
7
11
13
17
19
23
29
%