所以我对编程非常陌生,我从Python 3开始。我开始阅读“以艰难的方式学习Python”。现在,我得到了一个我有这个代码的地方:
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之间有什么区别?任何有用的链接?提前谢谢。
答案 0 :(得分:16)
您希望将%
应用于字符串:
print("I said: %r" % x)
您的代码将其应用于print()
调用的返回值,该调用返回None
。
或者,您可以切换为使用str.format()
:
print("I said: {!r}".format(x))
答案 1 :(得分:12)
您正在调用%
功能之外的print()
。这会尝试查看实际函数print
是否可以打印为%r
,并且因为print
没有返回任何内容,它会尝试获取值%r
None
1}}(因此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