J'ai ce programme python qui ajoute des chaînes aux entiers:
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
Je reçois cette erreur:
Python: TypeError: cannot concatenate 'str' and 'int' objects
Comment puis-je ajouter des chaînes à des entiers?
Il existe deux façons de résoudre le problème provoqué par la dernière instruction print
.
Vous pouvez affecter le résultat de l'appel str(c)
à c
comme indiqué correctement par @jamylak, puis concaténer toutes les chaînes, ou vous pouvez remplacer la dernière print
simplement par ceci:
print "a + b as integers: ", c # note the comma here
dans quel cas
str(c)
n'est pas nécessaire et peut être supprimé.
Sortie de l'échantillon:
Enter a: 3
Enter b: 7
a + b as strings: 37
a + b as integers: 10
avec:
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
str(c)
renvoie une représentation new string de c
et ne mute pas c
elle-même.
c = str(c)
est probablement ce que vous cherchez
Si vous voulez concaténer int ou floats en chaîne, vous devez utiliser ceci:
i = 123
a = "foobar"
s = a + str(i)
c = a + b
str(c)
En fait, dans cette dernière ligne, vous ne modifiez pas le type de la variable c. Si tu fais
c_str=str(c)
print "a + b as integers: " + c_str
ça devrait marcher.
La solution la plus facile et la moins déroutante:
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
J'ai trouvé ceci sur http://freecodeszone.blogspot.com/
J'ai également eu le message d'erreur "TypeError: impossible de concaténer les objets 'str' et 'int'". Il se trouve que j'ai juste oublié d'ajouter str () autour d'une variable lors de son impression. Voici mon code:
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()
Je sais que c'était une erreur stupide, mais pour les débutants très novices dans le python comme moi, cela se produit.
Vous pouvez convertir int
en str
en utilisant la fonction string:
user = "mohan"
line = str(50)
print(user + "typed" + line + "lines")
C’est ce que j’ai fait pour supprimer cette erreur de séparation des variables avec "," m’a aidé.
# Applying BODMAS
arg3 = int((2 + 3) * 45 / - 2)
arg4 = "Value "
print arg4, "is", arg3
Voici la sortie
(programme terminé avec code: 0)