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?
3 Réponses :
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)
Vous n'avez pas besoin Alors, supprimez le premier exécuter simplement charger code> 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é
/ code>, vous êtes maintenant laissé avec un
/ code> et donc lorsque vous divisez (), la dernière partie est un caractère blancheur. p>
pour code> boucle adn coupé à la suivante directement. Si vous voyez toujours le problème, cela pourrait être que
entrée () code> vous donne des caractères de fin et donc l'erreur que vous voyez est logique. P>
entrée ("le message"). Trimspace () code> 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. P>
Dans votre premier Voici un exemple de code de ce dont je parle: p> Le dernier pour code> boucle, vous aime toujours ajouter un caractère
/ code> à la fin de la chaîne, ce qui signifie que vous avez un
/ code> à la fin de votre chaîne finale. Lorsque vous faites un
load.split ('/') code> 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 code> de rien:
'' code> 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
/ code> et simplement à l'aide de la chaîne d'entrée comme un couple d'autres personnes disent est probablement votre meilleur choix. P > p>
charge = '''Join (charge) code>; La chaîne
charge code> n'est pas modifiée en place. (En effet, il ne peut pas i> être modifié;
str code> 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: code>. En fait, Vous avez fait exactement que i>, 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?