it-swarm-pt.tech

Python: TypeError: não é possível concatenar objetos 'str' e 'int'

Eu tenho este programa python que adiciona seqüências de caracteres para números inteiros:

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

Eu recebo este erro:

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

Como posso adicionar strings a inteiros?

130
user1581649

Existem duas maneiras de corrigir o problema causado pela última instrução print

Você pode atribuir o resultado da chamada str(c) a c conforme mostrado corretamente por @jamylak e então concatenar todas as strings, ou você pode substituir a última print simplesmente com isto:

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

nesse caso, 

str(c)

não é necessário e pode ser excluído.

Saída da amostra de execução:

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

com:

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) retorna uma representação new string de c, e não sofre mutação c.

c = str(c) 

é provavelmente o que você está procurando

71
jamylak

Se você quiser concatenar int ou floats para uma string, você deve usar isto:

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

Na verdade, nesta última linha você não está alterando o tipo da variável c. Se você fizer

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

deve funcionar.

5
user2919374

A solução mais fácil e menos confusa:

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

Eu encontrei isso em http://freecodeszone.blogspot.com/

1
Shekhar

Eu também tive a mensagem de erro "TypeError: não é possível concatenar objetos 'str' e 'int'". Acontece que eu apenas esqueci de adicionar str () ao redor de uma variável ao imprimi-lo. Aqui está o meu código:

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()

Eu sei, foi um erro estúpido, mas para iniciantes que são muito novos para python, como eu, isso acontece.

0
djmurps

Você pode converter int em str usando a função string:

user = "mohan"

line = str(50)

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

Isso é o que eu fiz para me livrar desse erro, separando a variável com "," me ajudou.

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

Aqui está a saída

O valor é de -113

(programa encerrado com código: 0)

0
Mansur Ali

Além de outras respostas, também é possível usar format()

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

Por exemplo -

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

resultará na saída - Time elapsed - 13 hours and 32 minutes

0
Ananth Raj Singh