一直在玩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"
答案 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"
,您也会得到错误的答案,因为1
在 2
之前排序。比较整数时,你会得到正确答案。
打印时,请使用逗号:
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之前)。