153

我有这个将字符串添加到整数的 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

我收到此错误:

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

如何将字符串添加到整数?

4

9 回答 9

185

有两种方法可以解决由最后一条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
于 2012-08-07T10:38:04.110 回答
86

str(c)返回 的字符串表示形式c,并且不会改变c自身。

c = str(c) 

可能是您正在寻找的

于 2012-08-07T10:37:09.117 回答
23

如果你想连接 int 或 floats 到一个字符串,你必须使用这个:

i = 123
a = "foobar"
s = a + str(i)
于 2012-08-07T10:37:34.610 回答
6
c = a + b 
str(c)

实际上,在最后一行中,您并没有更改变量 c 的类型。如果你这样做

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

它应该工作。

于 2013-10-25T09:38:28.240 回答
3

除了其他答案,还可以使用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

查看文档以获取更多信息。

于 2018-07-21T15:57:40.183 回答
2

您可以转换intstr使用字符串函数:

user = "mohan"

line = str(50)

print(user + "typed" + line + "lines")
于 2017-07-25T06:52:12.723 回答
1

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

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/上找到了这个

于 2016-06-26T11:28:52.080 回答
1

我还收到错误消息“TypeError:无法连接'str'和'int'对象”。事实证明,我只是在打印变量时忘记在变量周围添加 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()

我知道,这是一个愚蠢的错误,但对于像我这样对 python 非常陌生的初学者来说,它会发生。

于 2016-12-10T23:20:36.237 回答
1

这就是我为摆脱用“,”分隔变量的错误所做的工作,这对我有所帮助。

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

这是输出

值为 -113

(程序退出代码:0)

于 2017-09-07T08:59:47.513 回答