2017-09-27 4 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)) 

이 카이사르 내가 해결할 수없는인쇄 시저 암호는 한 번에

암호화하기 얻는 방법입니다. 한 번에 '이동 번호'-30 ~ 30을 사용하여 인쇄하는 방법은 무엇입니까? - 대문자와 소문자가 약간 다르게 마사지해야

1) 문자의 경우 :

답변

0

는 처리하지 않은 세 가지가 있습니다.

2) 문자가 아닌 문자 - 알파벳이 아닌 문자는 대개 문제가되지 않는 번호 여야합니다.

3) 모듈 식 산술 - 문자에 시프트를 추가하면 알파벳 끝에서 벗어날 수 있으므로 시계처럼 시작 부분을 감쌀 필요가 있습니다. 해독하면 반대가 발생합니다.

당신은 당신의 코드를 업데이트 할 때이 예제를 고려하십시오

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