我是python的新手,我正在尝试做一个简单的应用程序(年龄计算器);我正在使用Python 3。
这是我的代码:
date=2012
age=input("type in the date you born to calculate your age")
print ("your age is ") + (date-age)
对我来说似乎很好,但它给了我一个TypeError: cannot concatente 'str' and 'int' objects
。
答案 0 :(得分:12)
将所有内容作为一系列参数传递给print
函数:
print("your age is", date - int(age))
print()
函数会将date - int(age)
的结果转换为字符串。请注意,您需要先将age
(一个字符串)转换为整数,然后才能从date
中减去它。
答案 1 :(得分:1)
Python是strongly typed,因此您需要将数据转换为适当的类型。
age
是str
(字符串),因为它来自输入。你应该写:
date - int(age)
print ("your age is ") + (date-age)
无法发挥作用有两个原因:
print
是一个函数,所以它只考虑print ("your age is ") + (date-age)
作为其参数列表;
同样,您正在连接str
和int
,这在强类型语言中是非法的。
可以覆盖最后一次转换,因为print
为您完成所有工作:
print("your age is ", date - int(age))
答案 2 :(得分:1)
input
会给你一个字符串。 2012年,然而是一个int。它们都需要算术类型才能对它们进行数学运算。您希望输入是一个数字,可能是一个int。使用int(age)
投射它。
所以你会做print("Your age is ", date - int(age))
要挑剔你的代码,如果我出生于1992年12月怎么办?然后你的代码会说我20岁,即使我实际上是19岁。另外,如果我输入我出生的实际日期,June 6, 1992
怎么办?
如果您刚开始学习语法,这些都不相关,但是考虑一下是很好的,因为您很快就会发现这些类型的东西实际上会给您带来编程问题,而基本的在熟悉语言之后,语法和技术性很少,你可以在谷歌上查找或使用备忘单(因为我使用C语言语法处理这么多不同的语言,因此我的首选方法)。
答案 3 :(得分:1)
当您学习python时,最好将错误显示在最后一行,并将其提供给搜索引擎。
TypeError: cannot concatenate 'str' and 'int' objects
绝不是唯一的。
答案 4 :(得分:1)
这里的问题是你试图连接一个字符串和一个int。 Python(或大多数其他语言)不支持这种情况,这就是错误消息告诉您的内容。你所做的是错误的,因为你混合了两个不同的概念
错误地调用了函数 - 你应该这样调用它。
print('Your age is: ', date-age)
您使用了+运算符。这是连接字符串和数字的另一种方法,但要做到这一点,你必须首先确保它们都是相同的类型。在这种情况下 - 字符串。您可以使用字符串函数来完成此操作。
print('Your age is: ' + str(date-age))
更好的方法是使用字符串格式化,主要是因为它支持各种格式,而不需要将它们转换为字符串,以及使多个值的文本长字符串更容易。
print('Your age is: %d' % date-age)
您可以阅读有关字符串格式here的更多信息。
:)
答案 5 :(得分:0)
您要做的第一件事就是在print()函数括号中保留您想要打印的所有内容。
print ("your age is ") + (date-age)
不行。
这可能效果更好
print("your age is" + str(date-int(age)))
随着你继续使用python,你会发现为什么你不能做你用打印功能做的事情。 无论如何,我希望这对你有所帮助。 你也可以在代码中注意到我使用了一些函数; str()和int()。这些是类型转换功能。您可能之前遇到过这些问题,或者您很快就会做到。
答案 6 :(得分:-7)
尝试:
print("Your age is ",date-int(age))
str
会将整数结果转换为字符串,以便可以将其“正确”添加到字符串的其余部分。