Je suis très novice en programmation (6 semaines, autodidacte sur le net avec "codecademy" et "python the hard way"). J'ai décidé qu'il était temps que j'expérimente l'écriture de code sans direction et que je frappe un mur avec mon second projet. J'essaye de faire un "codeur secret" qui prend une chaîne de raw_input et remplace chaque lettre dedans avec la prochaine dans l'alphabet. Avec mes connaissances très limitées, j'ai pensé qu'un dictionnaire devrait être la voie à suivre. Avec un « petit » aide googler, je l'ai écrit ceci:python 2.7 remplacer une chaîne raw_input par une valeur tirée d'un dictionnaire
alpha = {"a" : "b", "b" : "c", "c" : "d", "d" : "e", "e" : "f", "f" : "g","g" : "h"
, "h" : "i", "i" : "j", "j" : "k", "k" : "l", "l" : "m","m" : "n", "n" : "o"
, "o" : "p", "p" : "q", "q" : "r", "r" : "s","s" : "t", "t" : "u", "u" : "v"
, "v" : "w", "w" : "x", "x" : "y", "y" : "z", "z" : "a"}
entry = raw_input("Please write a sentence you want to encode: ")
def encode(entry, letters):
for k, v in letters.iteritems():
if k in alpha:
entry = entry.replace(k, v)
return entry
print encode(entry, alpha)
Le problème que j'ai est que seulement la moitié des lettres dans ma chaîne sont remplacées par les valeurs correctes du dictionnaire. "a" et "b" seront tous les deux imprimés comme "c" quand "a" devrait être imprimé comme "b" et "b" devrait être imprimé comme "c" et ainsi de suite.
Là où je me complètement perdu est que, quand je l'ai remplacé chaque valeur dans mon dictionnaire avec des chiffres, il a parfaitement fonctionné.
Voilà l'essentiel de, je ne comprends vraiment pas ce qui ne va pas avec mon code.
Merci d'avance pour votre aide. PS: C'était mon premier article sur stackoverflow, j'espère que j'ai fait tout ce que je devrais faire.
EDIT: Puisque je ne peux pas encore donner de réputation, je vais simplement vous remercier tous pour vos réponses utiles. Je peux voir un peu plus clair maintenant où est mon erreur et je prendrai l'information fournie ici pour réparer mon code et travailler pour le comprendre correctement. Aussi, je peux voir qu'il existe des approches beaucoup plus logiques et directes pour résoudre ce genre de problème. Les fonctions sont encore un peu floues pour moi mais je suppose que c'est normal si tôt.
vous devez faire une boucle à l'entrée, pas de lettres, et se joindre à chaque ombles de retour avec « » – YOU
Imaginez ce scénario ... vous avez un 'dans votre chaîne a', et vous boucle et changer tout le' a '' s à 'b's, mais alors, vous bouclez et changez tous les' b's '' c' (qui peuvent inclure les 'a's que vous avez changé en' b's etc ... –
: D Mec je t'aime enthousiasme. Python est pratique mais puissant, donc un exercice similaire serait de crypter vos messages en utilisant des solutions crypto réelles - voyez par vous-même à quel point cela devient simple avec Python http://stackoverflow.com/questions/30056762/rsa-encryption-and-decryption-in -python :) –