딕셔너리 암호문 문제 힌트..
조회수 580회
dictionary = {"a": "b", "b": "c", "c": "d", "d": "e", "e": "f", "f": "g", "g": "h", "h": "i", "i": "j", "j": "k", "k": "l", "l": "m", "m": "n", "n": "o", "o": "p", "p": "q", "q": "r", "r": "s", "s": "t", "t": "u", "u": "v", "v": "w", "w": "x", "x": "y", "y": "z", "z" : "a", " ":" "}
password = "h knud xnt"
def decode(dictionary, password):
word = tuple(str(password))
for word in dictionary.keys():
ans = dictionary[word]
return ans
print(decode(dictionary,password))
password 키값을 넣어 딕셔너리의 벨류값 ans를 내보내는 def 함수를 정의하려하는데 초보다 보니 너무 어렵네요.. 위 코드 중 word 부분을 수정해야하는데 힌트좀 부탁드립니다.
1 답변
-
하고자하는 목적과 코드를 순서대로 읽어 보시면 간단합니다.
word = tuple(str(password))
는password
를 튜플로 만듭니다.password
가"h knud xnt"
이므로word
는('h', ' ', 'k', 'n', 'u', 'd', ' ', 'x', 'n', 't')
가 되겠죠.for word in dictionary.keys():
는dictionary
의 키값을 순회 하는데 이때 키가word
에 대입되니다. 즉,"a"
에 대해서 루프를 돌고,"b"
에 대해서 루프를 돌고 ... 으로dictionary
에 대한 모든 키에대해서 루프를 돕니다.헌데 이때 앞서 튜플화 하였던
word
의 값은 for 문으로 인해 사라지겠죠?하고자하는 작업은
word
의 글자 하나하나를 키로dictionary
에서 찾아 원래 문장으로 조합하는 것입니다. 그러니 튜플 값이 사라져서는 안됩니다.그리고 for 문에서는
dictionary
의 키를 갖고 순회를 하는 것이 아니라word
의 글자를 갖고 순회를 하여 찾아야합니다.따라서 튜플화 된
word
를 갖고 루프를 돌도록 다음과 같이 for문을 작성하면, 글자 하나하나에 대해서dictionary
에서 찾을 수 있습니다.for w in word: ans = dictionary[w]
하지만 그러면 글자 하나하나 찾기만 하는거지 원래 문장으로 조합을 하는 것은 아닙니다.
다음과 같이
dictionary
에서 찾은 글자를 문자열로 조합할 수 있습니다.ans = "" for w in word: ans += dictionary[w]
결과 적으로
"h knud xnt"
는"i love you"
으로 변환이 됩니다.
댓글 입력