0
votes

Comment réparer "ORD () attendu un caractère, mais une chaîne de longueur 0 trouvée" Erreur en Python

Mon programme doit encoder des messages d'entrée à l'aide d'un chiffre de César. J'ai essayé de diviser ma chaîne à de nombreuses lettres en mettant "/" entre eux. Ensuite, tout a travaillé (comme je pense). Finalement, lorsqu'un message se rapproche de CHR (ORD (CH) + 2), une erreur apparaît. Comment puis-je réparer avec ça? xxx


4 commentaires

charge = '''Join (charge) ; La chaîne charge n'est pas modifiée en place. (En effet, il ne peut pas être modifié; str est immuable.)


Insérer des barres obliques puis diviser sur ce caractère est complètement inutile; Vous pouvez directement itérer sur les caractères via pour CH dans le message: . En fait, Vous avez fait exactement que , dans le processus de génération de la chaîne gonflée!


Voir str.maketrans et str.Translate pour un moyen plus facile de traduire des chaînes.


Quelle est l'erreur qui apparaît?


3 Réponses :


0
votes

Vous devez le faire:

print("This program will encode your messages using a Caesar Cipher")

message = input("Enter the message: ")

codedMessage = ""

for ch in message:
    codedMessage = codedMessage + chr(ord(ch) + 2)


print("The coded message is:", codedMessage)


0 commentaires

0
votes

Vous n'avez pas besoin charger et fractionnement par '/'. Vous avez ajouté des caractères supplémentaires uniquement pour les diviser et les supprimer. Pire, dans ce cas après avoir ajouté / , vous êtes maintenant laissé avec un / et donc lorsque vous divisez (), la dernière partie est un caractère blancheur.

Alors, supprimez le premier pour boucle adn coupé à la suivante directement. Si vous voyez toujours le problème, cela pourrait être que entrée () vous donne des caractères de fin et donc l'erreur que vous voyez est logique.

exécuter simplement entrée ("le message"). Trimspace () Pour supprimer les caractères de suivi des espaces et le code devrait fonctionner. Vous pouvez travailler à optimiser votre code séparément, mais la question doit être celle.


0 commentaires

0
votes

Dans votre premier pour boucle, vous aime toujours ajouter un caractère / à la fin de la chaîne, ce qui signifie que vous avez un / à la fin de votre chaîne finale. Lorsque vous faites un load.split ('/') la chaîne à la fin est divisée à droite, vous laissant avec une chaîne vide à la fin, qui jette une erreur puisque vous essayez de Obtenez le ord de rien:

Voici un exemple de code de ce dont je parle: xxx

Le dernier '' est ce qui vous donne l'erreur. Il y a un tas de façons que vous pourriez aller à ce sujet, mais je pense à sauter les délimiteurs / et simplement à l'aide de la chaîne d'entrée comme un couple d'autres personnes disent est probablement votre meilleur choix.


0 commentaires