2016-09-18 4 views
0

J'ai ce code qui est un chiffrement César de base, le décalage est fixé à un mais je le veux pour que l'utilisateur puisse entrer le décalage. L'utilisateur doit être en mesure de dire de combien l'alphabet est déplacé à travers par, mais il ne fonctionnera pas si offset = entréeComment entrer le décalage pour un chiffrement Caesar en Python

#Caesar cipher 
sentance = input('Enter sentance: ') 
alphabet = ('abcdefghijklmnopqrstuvwxyz') 
offset = 1 
cipher = '' 

for c in sentance: 
    if c in alphabet: 
      cipher += alphabet[(alphabet.index(c)+offset)%(len(alphabet))] 

print('Your encrypted message is: ' + cipher) 

Répondre

1

C'est probablement parce que vous n'avez pas converti l'entrée en un nombre entier, et pratiquement rempli offset avec une chaîne.

Utilisez int(input()) pour convertir la chaîne entrée comme un entier (FACULTATIF rappelez-vous aussi ajouter le caractère original au cas où ils ne sont pas dans l'alphabet):

sentance = input('Enter sentance: ') 
offset = int(input('Enter offset: ')) 
alphabet = ('abcdefghijklmnopqrstuvwxyz') 
cipher = '' 

for c in sentance: 
    if c in alphabet: 
     cipher += alphabet[(alphabet.index(c) + offset) % (len(alphabet))] 
    else: 
     cipher += c 

print('Your encrypted message is: ' + cipher) 

va émettre:

Enter sentance: hello world! 
Enter offset: 13 
Your encrypted message is: uryyb jbeyq!