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