web-dev-qa-db-fra.com

Nouveauté du codage - Erreur Python = TypeError: ne peut concaténer que str (pas "int") avec str

Je suis novice en codage, alors j’ai décidé de créer une sorte de code secret à des fins de test avec Unicode. C’est ce que j’ai fait en ajoutant des chiffres à Unicode pour que ce soit plutôt secret. J'ai eu cette erreur mais je ne sais pas comment la résoudre. y-a-t'il une solution? Voici le code: 

while True:
    try:
        message = int(input("Enter a message you want to be decrypt: "))
        break
    except ValueError:
        print("Error, it must be an integer")
secret_string = ""
for char in message:
    secret_string += chr(ord(char - str(742146))                      
print("Decrypted", secret_string)
q = input("")
2
9ae

Python fonctionne un peu différemment de JavaScript, par exemple, la valeur que vous concaténez doit être à la fois int ou str ... 

Ainsi, par exemple, le code ci-dessous génère une erreur:

print( "Alireza" + 1980)

comme ça:

Traceback (most recent call last):
  File "<pyshell#12>", line 1, in <module>
    print( "Alireza" + 1980)
TypeError: can only concatenate str (not "int") to str

Pour résoudre le problème, ajoutez simplement str à votre nombre ou à votre valeur, comme suit:

print( "Alireza" + str(1980))

Et le résultat en tant que:

Alireza1980
5
Alireza

au lieu d'utiliser l'opérateur "+"

imprimer ("Alireza" + 1980)

Utilisez une virgule "," opérateur

impression ("Alireza", 1980)

0
Abhishek Kashyap

Le problème est que vous faites ce qui suit 

str(chr(char + 7429146))

où char est une chaîne. Vous ne pouvez pas ajouter un int avec une chaîne. cela provoquera cette erreur

peut-être si vous voulez obtenir le code ASCII et l'ajouter avec un nombre constant. si c'est le cas, vous pouvez simplement faire ord (char) et l'ajouter à un nombre mais encore une fois, chr peut prendre des valeurs comprises entre 0 et 1114112

0
InAFlash

Changer secret_string += str(chr(char + 7429146))

Pour secret_string += chr(ord(char) + 7429146)

ord() convertit le caractère en son équivalent entier Unicode. chr() convertit ensuite cet entier en son équivalent en caractères Unicode.

De plus, 7429146 est trop gros, il devrait être inférieur à 1114111

0
Tori Harris