尝试计算年龄时出现TypeError

时间:2013-12-29 22:23:22

标签: python

一直在玩Code Academy并学习一些基础知识,并开始阅读“学习Python的艰难方法”。

我只是在试图熟悉函数和语法,并且只是在写一些简单的代码 - 见下文。

我为line =“next_birth”收到以下错误 - 我做错了什么?我只是想尝试+1“年龄”,但显然不是正确的方式!

File "p.py", line 17, in <module>
    next_birth= age + 1
TypeError: cannot concatenate 'str' and 'int' objects

print "Hello there "
original = raw_input('What is your name? ')

if len(original) > 0:

    print "Hello "+original
else:
    print "Okay, your shy, dont tell me your name"

age=raw_input("How old are you? ")
if age >"25":
    print "Thats old....."
else:
    print "Your a spring chicken....."

birthday=raw_input("When is your birthday? ")

next_birth= age + 1

print "Ok, Happy" + next_birth + "Birthday for then. Nice talking to you, have a nice day"

3 个答案:

答案 0 :(得分:2)

age是一个字符串(raw_input()总是返回字符串),1是一个整数。你不能把两者加在一起。

age转换为整数:

next_birth = int(age) + 1

但你想尽早做到这一点:

age=int(raw_input("How old are you? "))
if age > 25:
    print "Thats old....."
else:
    print "Your a spring chicken....."

因为比较字符串会按字母顺序对它们进行比较。 "8"也大于"25",因为按字母顺序,8位于2之后。另一方面,如果您输入"100",您也会得到错误的答案,因为12之前排序。比较整数时,你会得到正确答案。

打印时,请使用逗号:

print "Ok, Happy", next_birth, "Birthday for then. Nice talking to you, have a nice day"

以便print会自动将next_birth的整数值再次转换为字符串。

答案 1 :(得分:2)

raw_input()返回一个字符串。在比较它之前,你必须先将它转换为整数,或者尝试将它与其他整数连接起来。

要执行此操作,请使用int()功能:

age = int(raw_input("How old are you? "))

请注意,如果输入的数字不是数字,则会失败。

也不建议使用诸如“大于”之类的运算符来比较字符串和字符串。将字符串"25"更改为整数25

答案 2 :(得分:0)

错误消息告诉您age是一个字符串(因为它是在输入中键入的)。您需要将其转换为数字。

例如:

age = int(age)

现在它是一个不是字符串的数字...... Python与数据类型一样奇怪。你会习惯的。

顺便说一下 - 一旦你将age作为整数,就需要用整数进行比较 - 例如

if age > 25:

而不是

if age > "25":

后者比较“词汇” - 它们将如何出现在字典中。因此,例如“100”&lt;“2”(1在字典中的2之前)。