2017-01-24 1 views
0

사용자가 제공 할 키 또는 번호에 따라 메시지를 암호화하는 프로그램을 만들려고했습니다. 그래서 예를 들어, 2의 키를 가진 문자 C는 문자 E로 바뀔 것입니다. 나는 26 개의 문자로 제한하는 방법이 확실하지 않지만 저장된 사전이나 서수 값을 사용하려고 생각하고있었습니다. 예를 들어, 지금 내 코드는 다음과 같습니다Python simple encryption

word = input("Please enter a word") 
numkey = input("Please enter a key") 

for ind in word: 
    encrypt = ord(ind) + int(numkey) 
    actual_encrypt = chr(encrypt) 

이 코드의 문제는 내가 26에 암호화 값을 제한하고 거기에 도달하면 다시 시작해야 할 것입니다. 예를 들어 27 대신에 다시 1이됩니다. 나는 그것을 설정하는 방법에 대해 조금 혼란스러워합니다. 고맙습니다.

+0

간단한 방법을'암호화> = toobig 경우 : encrypt - = toobig' –

+0

키가 100과 같이 대단히 크고 서수가 3 인 서수라고 가정 해 봅시다. 이것은 103 일 것입니다. 그러면 103이 나오고 26이 나오지만 여전히 잘못된 것입니다. 편지. – JazzHandz

답변

0

계수 작동을 원할 때, %. 예를 들어 27 % 261입니다.

+0

오케이. 나는 그것이 합리적이라고 생각한다. 고맙습니다. – JazzHandz

0

질문을 올바르게 이해하면이 문제를 해결하는 일반적인 방법은 모듈러스 연산자 "%"를 사용하는 것입니다. 이 연산자는 피연산자 간의 정수 나누기의 나머지를 반환합니다.

은 다음과 같을 수있다 :

encrypt = ((ord(ind) + int(numkey)) % 27) + 1 

ord(ind) + int(numkey) 결과가 27 인 경우, 0 % 27 결과 (1 오프셋 따라서 추가).

+0

그건 의미가 있습니다. 고맙습니다. – JazzHandz

2

이해하는 경우가 바로 단어는 문자를 포함

encrypt = ord(ind) + int(numkey) 

과 : AZ 그래서 당신이 라인을 대체 할 수있는 경우

encrypt = ord('a') + (ord(ind) - ord('a') + int(numkey)) % 26