TypeError: 不能连接“ str”和“ int”对象

我有一个 python 程序,它可以给整数添加字符串:

a = raw_input("Enter a: ")
b = raw_input("Enter b: ")
print "a + b as strings: " + a + b
a = int(a)
b = int(b)
c = a + b
str(c)
print "a + b as integers: " + c

我得到了这个错误:

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

如何向整数添加字符串?

367604 次浏览

str(c)返回 c新的字符串表示形式,并且不会使 c本身发生变异。

c = str(c)

可能就是你要找的

如果要将 int 或 float 连接到字符串,则必须使用以下命令:

i = 123
a = "foobar"
s = a + str(i)

有两种方法可以修复由最后一个 print语句引起的问题。

您可以将 str(c)调用的结果分配给 c,如@jamylak 所正确显示的那样,然后将所有字符串连接起来,或者您可以将最后一个 print简单地替换为:

print "a + b as integers: ", c  # note the comma here

这样的话

str(c)

不需要,可以删除。

样本运行的输出:

Enter a: 3
Enter b: 7
a + b as strings:  37
a + b as integers:  10

与:

a = raw_input("Enter a: ")
b = raw_input("Enter b: ")
print "a + b as strings: " + a + b  # + everywhere is ok since all are strings
a = int(a)
b = int(b)
c = a + b
print "a + b as integers: ", c
c = a + b
str(c)

实际上,在最后一行中,您并没有改变变量 c 的类型

c_str=str(c)
print "a + b as integers: " + c_str

应该能行。

最简单也最不容易混淆的解决方案是:

a = raw_input("Enter a: ")
b = raw_input("Enter b: ")
print "a + b as strings: %s" % a  + b
a = int(a)
b = int(b)
c = a + b
print "a + b as integers: %d" % c

我在 http://freecodeszone.blogspot.com/上找到了这个

我还有一个错误消息“ TypeError: can not concatenate‘ str’and‘ int’object”。事实证明,我只是在打印变量时忘记了在变量周围添加 str ()。这是我的代码:

def main():
rolling = True; import random
while rolling:
roll = input("ENTER = roll; Q = quit ")
if roll.lower() != 'q':
num = (random.randint(1,6))
print("----------------------"); print("you rolled " + str(num))
else:
rolling = False
main()

我知道,这是一个愚蠢的错误,但对于初学者谁是非常新的蟒蛇像我一样,它发生了。

您可以使用字符串函数将 int转换为 str:

user = "mohan"


line = str(50)


print(user + "typed" + line + "lines")

这是我所做的,以消除这个错误分离变量与“ ,”帮助我。

# Applying BODMAS
arg3 = int((2 + 3) * 45 / - 2)
arg4 = "Value "
print arg4, "is", arg3

这是输出

值是 -113

(程序退出代码: 0)

除了其他的答案,还可以使用 format()

print("a + b as integers: {}".format(c))

例如-

hours = 13
minutes = 32
print("Time elapsed - {} hours and {} minutes".format(hours, minutes))

将导致输出 -Time elapsed - 13 hours and 32 minutes

查看 医生了解更多信息。