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
Как добавить строки в целые числа?
Ответы
Ответ 1
Есть два способа исправить проблему, вызванную последним оператором 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
Ответ 2
str(c)
возвращает новое строковое представление c
и не мутирует сам c
.
c = str(c)
вероятно, то, что вы ищете
Ответ 3
Если вы хотите объединить int или float в строку, вы должны использовать это:
i = 123
a = "foobar"
s = a + str(i)
Ответ 4
c = a + b
str(c)
Собственно, в этой последней строке вы не меняете тип переменной c. Если вы делаете
c_str=str(c)
print "a + b as integers: " + c_str
он должен работать.
Ответ 5
Самое легкое и наименее запутанное решение:
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/
Ответ 6
У меня также появилось сообщение об ошибке "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()
Ответ 7
Вы можете преобразовать int
в str
с помощью строковой функции:
user = "mohan"
line = str(50)
print(user + "typed" + line + "lines")
Ответ 8
Это то, что я сделал, чтобы избавиться от этой ошибки, разделяющей переменную с помощью ",", помогла мне.
# Applying BODMAS
arg3 = int((2 + 3) * 45 / - 2)
arg4 = "Value "
print arg4, "is", arg3
Вот результат
Значение -113
(программа вышла с кодом: 0)
Ответ 9
Помимо других ответов, можно также использовать 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
Проверьте документы для получения дополнительной информации.