Python初学者在这里。想问你一个非常简单的问题。
这是第一个示例代码:
print "I will \"Add\" any two number that you type."
x = raw_input("What is the first number?")
y = raw_input("What is the second number?")
z = x + y
print "So, %d plus %d equals to %d" % (x, y, z)
在最后一行中使用%d会给我错误:
TypeError: %d format: a number is required, not str
这是第二个示例代码:
print "I will \"Add\" any two number that you type."
x = raw_input("What is the first number?")
y = raw_input("What is the second number?")
z = x + y
print "So, %r plus %r equals to %r" % (x, y, z)
这不会产生第一个代码所给出的错误。
所以我的问题是为什么使用%d会给我错误,但使用%r却不会给我错误?
最佳答案
当您通过raw_input()
输入时,它返回一个字符串,因此x
和y
是字符串,而z
是x
和y
的串联,而不是其加法。不确定这是否是您想要的。如果希望将它们用作int
,请使用int(raw_input(...))
将它们转换为int。
您得到的错误是因为%d期望x
,y
和z
(用于替换%d
)是整数(但是它们实际上是字符串,因此是错误的)。
而%r
表示repr()
的输出,它接受任何类型的对象,因此在第二种情况下都可以使用,尽管它将返回串联(而不是加法)。
关于python - 为什么在某些情况下%r可以工作而%d可以工作,即使有很多,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31954658/