2013-08-16 2 views
-1

이것은 나의 과제이다 : 비밀 메시지를 DECRYPTS하는 프로그램을 작성하십시오.스크램블 된 알파벳의 암호를 해독 하시겠습니까?

먼저 사용자에게 스크램블 된 알파벳을 묻습니다. 그런 다음 비밀 메시지를 요구해야합니다. 마지막으로 스크램블되지 않은 버전을 출력합니다.

스크램블 된 알파벳에 정확히 26 자의 입력이 있음에 유의하십시오. 모든 알파벳 문자는 디코드 된 동등한 문자열 (WHILE 루프가 적용됨)로 변환되며 다른 모든 알파벳이 아닌 문자는 번역하지 않고 그대로 출력해야합니다. 내가 while 루프를 사용하여 알파벳을 교란하는 방법을 알아낼 수없는 것

decrypt = ["*"] * 26 

scram_alphabet = input("Please input the scrambled alphabet in order: ") 

while len(scram_alphabet) != 26: 
    scram_alphabet = input("Please input the scrambled alphabet in order. The alphabet must have 26 characters: ") 

num = 0 

for each_letter in scram_alphabet: 
    decrypt[num] = ord(each_letter) 
    num = num + 1 

print() 
print() 

msg = input("Now input your scrambled message: ") 

print() 
print() 

num = 0 

alphabet = [" "] * 26 
for letter in range (26): 
    alphabet[letter] = letter + 65 

while num < 26: 
    alphabet [num] = decrypt [num] 
    print(chr(alphabet[num])) 
    num = num + 1 


for alpha in msg.upper(): 
    if alpha < "A" or alpha > "Z": 
     print(alpha,end="") 
    else: 
     print(chr(decrypt[ ord(alpha) - 65 ]), end="") 

:

이 지금까지 내 코드입니다.

현재 'XQHAJDENKLTCBZGUYFWVMIPSOR'을 알파벳으로 입력하고 'VNKW KW BO 1WV WJHFJV BJWWXEJ!'라고 입력하면 비밀 메시지로 프로그램은 스크램블 된 알파벳과 "IZTP TP QG 1PI PLNDLI QLPPSJL!"이라는 "unscramble"메시지를 출력합니다. 스크램블되지 않은 메시지는 실제로 "이것은 나의 1ST 비밀 메시지입니다!"

도우미가 있습니까?

+2

2 일 전, 2 일전에 수업이 끝났다고 하던데요. 아직도 숙제있어? – user2357112

+0

예. hw는 결승전 다음날에 만기가된다. – user2680935

답변

3

잘못된 방향으로 매핑하고 있습니다. 예를 들어 첫 번째 문자를 봅시다. V는 T가되어야하지만, 왜 그렇습니까?

대답은 알파벳이 차지하는 자리가 T가 일반적으로 차지하는 지점이기 때문입니다. 대신 V가 알파벳에서 차지할 자리를 찾고 그 편지에서 대체해야합니다.

요약하면 현재 프로그램은 스크램블러이며 스크램블러가 아니므로 ' 메시지를 다시 스크램블하는 것뿐입니다.

decrypt[num] = ord(each_letter) 

:이 문제 라인이

Please input the scrambled alphabet in order: 'XQHAJDENKLTCBZGUYFWVMIPSOR' 
Now input your scrambled message: 'THIS IS MY 1ST SECRET MESSAGE!' 
VNKW KW BO 1WV WJHFJV BJWWXEJ! 

: 나도 같은 알파벳을 사용하는 대신 원본 메시지를 제공하는 경우 예를 들어, 내가 얻을 결과는 귀하가 제공 한 스크램블 메시지와 동일 대신 반대 방향으로지도를 구축해야합니다

decrypt[ord(each_letter) - 65] = num + 65 

지금 프로그램이 작동합니다

Please input the scrambled alphabet in order: 'XQHAJDENKLTCBZGUYFWVMIPSOR' 
Now input your scrambled message: 'VNKW KW BO 1WV WJHFJV BJWWXEJ!' 
THIS IS MY 1ST SECRET MESSAGE! 
0

내가 알 수있는 바로는 스크립트가 올바르게 실행되고있는 것 같습니다. 스크램블되지 않은 메시지는 "이것은 나의 첫 번째 비밀 메시지입니다!" 당신이 테스트하기 위해 다른 예를 필요로하거나 수행중인 스크램블링 방법 아마도 내가 오해 것 같은

Key: XQHAJDENKLTCBZGUYFWVMIPSOR 
    ABCDEFGHIJKLMNOPQRSTUVWXYZ 

Original: VNKW KW BO 1WV WJHFJV BJWWXEJ! 
Translated: IZTP ... 

것 같습니다 :

여기에 내가 당신의 알파벳을 사용 않았다 일부 수동 번역입니다.

관련 문제