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


问题内容
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)

我开始试验Python,但我不明白我的代码有什么问题…我得到了:

…打印(“ x:%d,素数为”)%(x)
TypeError:%不支持的操作数类型:’NoneType’和’int’


问题答案:

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

print ("x:%d, prime YES") % (x)

实际上意味着

(print ("x:%d, prime YES")) % (x)

而且由于printreturn None,这给了你错误。

另外,请注意-(x)不是包含1个元素的元组,它只是value x。使用(x,)的元组。

因此,只需移动括号并添加逗号即可:

print("x:%d, prime YES" % (x,))