2017-09-27 5 views
-1
def en(password,shift): 
    result = "" 
    for i in password: 
     result += chr(ord(i)+ shift) 
    return result 
def de(password,shift): 
    result = "" 
    for i in password: 
     result += chr(ord(i) - shift) 
    return result 
n=input("Input : ") 
s=int(input("shift number : ")) 
e=en(n,s) 
print("encoded : "+e) 
print("decoded : "+de(e,s)) 

C'est la méthode obtenir César encrypterl'impression de chiffrement César à la fois

Je ne peux pas résoudre. Comment imprimer en utilisant «numéro de quart» -30 ~ 30 à la fois?

Répondre

0

Il y a trois choses que vous ne l'avez pas traités:

1) Lettre - cas de lettres majuscules et minuscules doivent massé un peu différemment.

2) Les non-lettres - non alphabétiques devraient probablement passer sans être contestées.

3) Arithmétique modulaire - lorsque vous ajoutez un décalage à une lettre, vous pouvez tomber de la fin de l'alphabet, vous devez donc passer au début comme une horloge. L'inverse se produit lorsque vous décodez.

Considérez cet exemple que vous mettez à jour votre code:

% python3 test.py 
Input: Veni, vidi, vici 
Shift number: 13 
encoded: Irav, ivqv, ivpv 
decoded: Veni, vidi, vici 
%