如果我使用:
>>> n = input("What is your name? ")
What is your name? 23
>>> print("Hello " + n)
输出为
Hello 23
然后它正确打印。但是如果我使用:
>>> n = 1
>>> print("Hello" + n)
结果:
Traceback (most recent call last): File "<pyshell#74>", line 1, in
<module>
print("Hello" + n) TypeError: can only concatenate str (not "int") to str
然后给出一个错误。我知道不使用str()
函数就不允许使用字符串打印数字,因此在第一种情况下,为什么不给出错误?
因为 input()
始终返回 str
。
在您的第一个示例中,n
是"23"
,而不是23
,因此串联有效。
input
函数始终返回字符串,因此,即使用户输入一个数字, input
仍然在字符串中返回数字,因此可以将其与另一个字符串串联。
那是因为 input()
返回一个字符串,即在您的示例中,字符串'23'
。
检查:
>>> n = input("What is your name? ")
What is your name? 23
>>> print(type(n))
<class 'str'>
操作员+
的动作取决于操作数的类型,但两者都需要相同的type
。对于字符串,它是用于串联的,因此,两种操作数都是相同类型的string
。但是,python
仍然可以使用,
在同一行上打印两种不同类型的操作数。
例如,
print("Hello ",n)