TypeError:%不支持的操作数类型:'NoneType'和'int'

pep*_*nas 2 python

def prime(x):
    if (x == 0 or x % 2 == 0):
        return 0
    elif (x == 1):  
        return 1
    else:
        for y in range(x-1,0,-1):
            if (x % y == 0):
                return 0
            else:
                pass
        if (y == 1):
            return 1

for x in range(1,20):
    if (prime(x)):
        print ("x:%d, prime YES") % (x)
    else:
        print ("x:%d, prime NO") % (x)
Run Code Online (Sandbox Code Playgroud)

我正在开始尝试Python,我无法理解我的代码有什么问题......我得到了:

... print("x:%d,prime YES")%(x)
TypeError:%支持的操作数类型:'NoneType'和'int'

Rem*_*ich 12

等等 - 我找到了.您正在使用Python 3!其中print是一个功能.因此,

print ("x:%d, prime YES") % (x)
Run Code Online (Sandbox Code Playgroud)

实际意味着

(print ("x:%d, prime YES")) % (x)
Run Code Online (Sandbox Code Playgroud)

而且,自从print返回以来None,您就会得到错误.

另外,要注意 - (x)不是包含1个元素的元组,它只是值x.使用(x,)的元组.

所以只需移动parens并添加一个逗号:

print("x:%d, prime YES" % (x,))
Run Code Online (Sandbox Code Playgroud)