2013-06-08 4 views
1

나는 알파의 문자 (또는 그 반대)와 키에 문자를 교체하려고 해요 : 나는 문자열을 변경하려고 파이썬에서 단어 바꾸기?

alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 
key = "XPMGTDHLYONZBWEARKJUFSCIQV" 

인코딩 될 수

(및 그 반대), 그렇게 말 "Hello"는 "LTZZE"가됩니다. 어떤 생각을 어떻게 할 것인가? str.maketransstr.translate

usrInput = 0 
alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 
key = "XPMGTDHLYONZBWEARKJUFSCIQV" 

def menu(): 
    print "SECRET DECODER MENU" 
    print "" 
    print "1) Quit" 
    print "2) Encode" 
    print "3) Decode" 
    usrInput = raw_input("What would you like to do?") 

    return usrInput 


def encodeWord(): 
    plain = plain.upper() 
    length = len(plain) 
    encode = plain.encode(alpha, key) 

    return encode 


def decodeWord(): 
    coded = coded.upper() 
    length = len(coded) 
    decode = coded.decode(key, alpha) 

    return decode 


def main(): 

    keepGoing = True 

    while keepGoing: 
     usrInput = menu() 

     if usrInput == "2": 
      plain = raw_input("Text you want to be encoded: ") 
      encodeWord() 
      print encode(plain) 

     elif usrInput == "3": 
      coded = raw_input("Code you need to be decyphered: ") 
      decodeWord() 
      print decode(coded) 

     elif usrInput == "1": 
      print "Thanks for doing super secret spy stuff with me. No one seems to want to anymore. Goodbye.):" 
      keepGoing = False 

     else: 
      print "I don't know what to do! Ahhh!" 

main() 
+0

저는 이것이 재미 있고 배우기 쉬운 문자열 작업을위한 단순한 excersice가되기를 바랍니다. 그것이 아니라면 - 그것을 사용하려고하는 사람들은 일대일 대체 암호가 펜과 종이 (그리고 꽤 많은 수학)로 분해 될 수 있기 때문에 큰 문제가되기 때문입니다. – J0HN

+0

@ J0HN 걱정하지 마세요, 그것은 문자열 조작을위한 연습 일뿐입니다! –

답변

1

사용 : 이것은 내 현재 코드입니다. 파이썬 2를 사용하는 경우이 함수는 string (here (maketrans)here (translate))입니다.

예 (파이썬 3) :

alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 
key = "XPMGTDHLYONZBWEARKJUFSCIQV" 
enc = str.maketrans(alpha, key) 
usrInput = 'HELLO' 
print(usrInput.translate(enc)) 

예 (파이썬 2)

import string 
alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 
key = "XPMGTDHLYONZBWEARKJUFSCIQV" 
enc = string.maketrans(alpha, key) 
inp = 'HELLO' 
print string.translate(inp, enc) 

출력 :이 컴퓨터 과학 수업을위한 숙제입니다

LTZZE 
+0

@ user1775603 아, 그래. 나는 이제 파이썬 2를 추가했다. – TobiMarg

+0

멋지다. –

2

참고. 나는 과제를 만들었고 스택 오버플로를 알고 있습니다. 당신이 그것을 당신 자신의 일로 바꾸면 나는 알게 될 것입니다. 과제에 대해 0 점을 얻게되며 학업 부정 행위 절차가 시작됩니다.

(집에서 놀고있는 경우 실제로 이것은 문자열 조작 할당이며, 좋은 암호 실습으로 간주되지 않습니다. 문자열 조작이므로이 지정에 maketrans()도 허용하지 않습니다. 처음 프로그래머를위한 기능 운동).

정말로 도움이 절실히 필요하다면 나에게 도움을 청하는 낭송 리더 중 한 명을 참조하십시오.

+0

LOL. 15 자. – FuzzyDuck