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

时间:2014-02-27 14:04:51

标签: 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)

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

  

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

1 个答案:

答案 0 :(得分:11)

等等 - 我找到了。您正在使用Python 3!其中print是一个函数。因此,

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

实际上意味着

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

由于print会返回None,因此您会收到错误。

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

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

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