2017-11-27 3 views
0

나는이 문자열을 사용하여 모든 문자를 ASCII 코드로 변환하고, 특정 숫자 (rotate_number)를 추가 한 다음 변환 된 모든 문자의 번역 된 버전을 인쇄하는이 코드를 작성하려고했습니다. 무작위 문자의 문자열로 되 돌린다 (그러나 공백과 기호는 동일하게 남음). 예를 들어, 나는 "오늘 어떠니?"라는 문자열을 원합니다. 말하기 +4의 수만큼 회전하여 최종 제품이 "Lsa evi csy xshec?"라고 말합니다. 내 질문에 이미 답이 있는지코드를 작동하는 Caesar Cipher 변환기로 변환하는 방법은 무엇입니까?

def encrypt_words(words, rotate_number): 
    blank = "" 
    for i in words: 
     translate1 = ord(i) + rotate_number 
     translated = chr(translate1) 
     blank += translated 
    print translated 

encrypt_words("How are you today?", 3) 

는 또한, 미안 해요 :

여기에 내가 그것을 실행할 때 내가 지금까지하지만, 단 하나의 문자가 회전 인쇄되어있는 코드입니다. 나는 웹과이 특정 사이트를 통해 모든 것을 조사해 왔지만 아무것도 작동하지 않는 것 같습니다 ...

+2

인쇄하십시오. 공백으로 인쇄하십시오. –

+0

공백 이름은 (주로) 비어 있지 않은 것으로 오해의 소지가 있습니다. –

답변

0

코드에서와 같이 번역되지 않은 "blank"문자열을 인쇄하는 것처럼 보입니다. 다음보십시오 :

def encrypt_words(words, rotate_number): 
    blank = "" 
    for i in words: 
     translate1 = ord(i) + rotate_number 
     translated = chr(translate1) 
     blank += translated 
    print blank 

빈 번역 된 각 값의 연결입니다. 이름이 오도하기 때문에 아마도 'blank'로 이름을 바꾸어야합니다.

0

지금 회전의 조회 테이블을 만들 회전 방법

def rotate(alphabet,rotation): 
    return alphabet[rotation:]+alphabet[:rotation] 

#test it 
print(rotate(string.ascii_lowercase,5)) 

을 만드는 첫 번째 추천 할 것입니다

def create_lookup_table(rotation,*alphabets): 
    if not alphabets: 
     alphabets = [string.ascii_lowercase,string.ascii_uppercase] 
    alphabet = "".join(alphabets) 
    rotated = "".join(rotate(a,rotation) for a in alphabets) 
    return dict(zip(alphabet,rotated)) 

# test it 
create_lookup_table(5) 
create_lookup_table(2,"abcdef","GHIJKLM") 

우리가 우리 자신에게 우리를 도울 수있는 도구 세트를 제공했기 때문에 지금 카이사르 암호를 구현하는 trival입니다

def ceasar(msg_plain,rotation): 
    lookup_table = create_lookup_table(rotation) 
    return ''.join(lookup_table.get(char,char) for char in msg_plain) 

# test it 
ceasar("Hello World!",13) # 'Uryyb Jbeyq!' 
0

다음과 같이하면 좋을 것입니다 :

관련 문제