it-swarm.com.ru

Python: 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

Я получаю эту ошибку:

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

Как я могу добавить строки к целым числам?

130
user1581649

Есть два способа исправить проблему, вызванную последним оператором 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
160
Levon

str(c) возвращает new строковое представление c и не изменяет сам c.

c = str(c) 

вероятно то, что вы ищете

71
jamylak

Если вы хотите объединить int или с плавающей точкой в ​​строку, вы должны использовать это:

i = 123
a = "foobar"
s = a + str(i)
21
Thargor
c = a + b 
str(c)

На самом деле, в этой последней строке вы не меняете тип переменной c. Если вы делаете

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

он должен работать.

5
user2919374

Самое простое и наименее запутанное решение:

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/

1
Shekhar

У меня также было сообщение об ошибке «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, таких как я, такое случается.

0
djmurps

Вы можете преобразовать int в str, используя строковую функцию:

user = "mohan"

line = str(50)

print(user + "typed" + line + "lines")
0
Cmpmohan Mohan

Это то, что я сделал, чтобы избавиться от этой ошибки, разделив переменную с помощью ",", помог мне.

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

Вот вывод

Значение -113

(программа вышла с кодом 0)

0
Mansur Ali

Помимо других ответов, можно также использовать 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

0
Ananth Raj Singh