类型错误:不支持的操作数类型 %:“NoneType”和“str”

Posted

技术标签:

【中文标题】类型错误:不支持的操作数类型 %:“NoneType”和“str”【英文标题】:TypeError: unsupported operand type(s) for %: 'NoneType' and 'str' 【发布时间】:2014-06-15 20:56:50 【问题描述】:

所以我对编程非常陌生,我从 Python 3 开始。我开始阅读“Learn Python the Hard Way”。现在,我到了拥有这段代码的地步:

x = "There are %d types of people." % 10
binary = "binary"
do_not = "don't"
y = "Those who know %s and those who %s" % (binary, do_not)

print(x)
print(y)
print("I said: %r") % x

我真的不知道%r%s%d 之间的区别。我得到的错误是TypeError: unsupported operand type(s) for %: 'NoneType' and 'str' 不知道该怎么做以及如何解决它。请解释我如何才能使它真正起作用以及为什么它不起作用。另外,%r,d 和 s 有什么区别?任何有用的链接?提前谢谢你。

【问题讨论】:

为什么投反对票?这是一个新用户,我们不要在没有解释的情况下将他/她赶走。 @markg 我猜是因为这个问题很糟糕,找到这种东西是微不足道的。 @markg 因为错误告诉 OP 究竟是什么问题? @jonrsharpe 确实如此,如果您了解 Python。对于一个非常初学者来说,它并不那么容易阅读(但可能可以实现,如果一个人用足够的时间敲打他们的头)。 这让我想起了当我第一次加入这个平台时,一个 12 人的团队会访问我的问题并将其标记为非建设性的,un-this un-that 并离开。没有方向,没有帮助,没有解释。所以我不再问了。 【参考方案1】:

您想将% 应用于 字符串

print("I said: %r" % x)

您的代码将其应用于print() 调用的返回值,该调用返回None

或者,您可以切换到使用str.format()

print("I said: !r".format(x))

【讨论】:

【参考方案2】:

您在print() 函数之外调用%。这试图查看实际函数print 是否可以打印为%r,并且因为print 不返回任何内容,它会尝试获取%r 的值None(因此出现NoneType 错误)。将其更改为:

print("I said: %r" %(x))

以下代码:

#!/usr/local/bin/python3
x = "Hello"
print ("Hello World! %s") %(x)

引发以下错误:

Hello World! %s
Traceback (most recent call last):
  File "main.py", line 3, in 
    print ("Hello World! %s") %(x)
TypeError: unsupported operand type(s) for %: 'NoneType' and 'str'

将代码更改为以下作品:

#!/usr/local/bin/python3
x = "Hello"
print ("Hello World! %s" %(x))

输出:

Hello World! Hello

【讨论】:

以上是关于类型错误:不支持的操作数类型 %:“NoneType”和“str”的主要内容,如果未能解决你的问题,请参考以下文章

Keras 报告类型错误:+ 的不支持的操作数类型:'NoneType' 和 'int'

为啥我会收到不支持的操作数类型错误?

类型错误:不支持的操作数类型 %:“NoneType”和“str”

不支持的操作数类型错误。 paypal付款后啥时候退货?

求和函数概率类型错误:+ 不支持的操作数类型:“int”和“str”

代码错误Python:TypeError:/:'set'和'int'不支持的操作数类型