Python 类型错误:% 不支持的操作数类型:'NoneType' 和 'str'
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/23372824/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
TypeError: unsupported operand type(s) for %: 'NoneType' and 'str'
提问by user3586591
So I am VERY new to programming and I started with Python 3. I started reading "Learn Python the Hard Way". Now, I got to a point where I had this code:
所以我对编程非常陌生,我从 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
I do not really know the difference between %r
, %s
and %d
. The error I get is TypeError: unsupported operand type(s) for %: 'NoneType' and 'str'
No idea what to do and how to fix it. Please explain how I can actually make it work and why it won't work. Also, what is the difference between %r,d and s? Any useful links? Thank you in advance.
我真的不知道%r
,%s
和之间的区别%d
。我得到的错误是TypeError: unsupported operand type(s) for %: 'NoneType' and 'str'
不知道该怎么做以及如何解决它。请解释我如何才能真正使它工作以及为什么它不起作用。另外,%r,d 和 s 有什么区别?任何有用的链接?先感谢您。
回答by Martijn Pieters
You want to apply %
to the stringinstead:
要应用%
到的字符串,而不是:
print("I said: %r" % x)
Your code is applying it to the return value of the print()
call, which returns None
.
您的代码将其应用于print()
调用的返回值,该调用返回None
.
Alternatively, you can switch to using str.format()
:
或者,您可以切换到使用str.format()
:
print("I said: {!r}".format(x))
回答by A.J. Uppal
You are calling the %
outside of the print()
function. This tries to see if the actual function print
can be printed as %r
, and because print
doesn't return anything, it tries to get %r
for the value None
(hence the NoneType
error). Change it to:
您正在调用函数的%
外部print()
。这会尝试查看实际函数是否print
可以打印为%r
,并且由于print
不返回任何内容,因此它尝试获取%r
该值None
(因此出现NoneType
错误)。将其更改为:
print("I said: %r" %(x))
The following code:
以下代码:
#!/usr/local/bin/python3
x = "Hello"
print ("Hello World! %s") %(x)
Raises the following error:
引发以下错误:
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'
Changing the code to the following works:
将代码更改为以下工作:
#!/usr/local/bin/python3
x = "Hello"
print ("Hello World! %s" %(x))
Output:
输出:
Hello World! Hello