遇到python问题

时间:2012-09-25 14:17:36

标签: python python-3.x

我是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

7 个答案:

答案 0 :(得分:12)

将所有内容作为一系列参数传递给print函数:

print("your age is", date - int(age))

print()函数会将date - int(age)的结果转换为字符串。请注意,您需要先将age(一个字符串)转换为整数,然后才能从date中减去它。

答案 1 :(得分:1)

Python是strongly typed,因此您需要将数据转换为适当的类型。

  • agestr(字符串),因为它来自输入。你应该写:

    date - int(age)

  • print ("your age is ") + (date-age)无法发挥作用有两个原因:

      python 3中的
    1. print是一个函数,所以它只考虑print ("your age is ") + (date-age)作为其参数列表;

    2. 同样,您正在连接strint,这在强类型语言中是非法的。

可以覆盖最后一次转换,因为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绝不是唯一的。

TypeError: cannot concatenate 'str' and 'int' objects

答案 4 :(得分:1)

这里的问题是你试图连接一个字符串和一个int。 Python(或大多数其他语言)不支持这种情况,这就是错误消息告诉您的内容。你所做的是错误的,因为你混合了两个不同的概念

  1. 错误地调用了函数 - 你应该这样调用它。

    print('Your age is: ', date-age)
    
  2. 您使用了+运算符。这是连接字符串和数字的另一种方法,但要做到这一点,你必须首先确保它们都是相同的类型。在这种情况下 - 字符串。您可以使用字符串函数来完成此操作。

    print('Your age is: ' + str(date-age))
    
  3. 更好的方法是使用字符串格式化,主要是因为它支持各种格式,而不需要将它们转换为字符串,以及使多个值的文本长字符串更容易。

    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会将整数结果转换为字符串,以便可以将其“正确”添加到字符串的其余部分。