본문 바로가기
프로그램/Python 1000제

Python 287제] 두근두근 파이썬(개정판) CHAPTER 8 도전문제 p256

by 건티 2024. 6. 21.
728x90

출처 : 반크_독도2023

 

참고풀이]

def Input(S):
    Si=input(S+"할 문자열을 입력하세요 : ")
    n=int(input("문자의 이동거리를 입력하세요(1~25) : "))

    return Si, n

 


def PrintStr(S,Result):
    print("\n" + S + "한 결과입니다]")
    print(Result + "\n")

 


def Encrypt():
    Str, N=Input("암호화")

    #plain_text = "Love will find a way." # 평문
    encrypted_text = ""          # 암호문
    for c in Str:                       # 평문의 모든 글자에 대하여 반복한다.
        x = ord(c)                     # 글자의 코드값을 구한다.
        x += N                          # 코드값을 하나 증가한다. 
        cc = chr(x)                    # 증가된 코드값에 해당하는 문자를 계산한다. 
        encrypted_text += cc   # 암호문에 추가한다.

    PrintStr("암호화",encrypted_text) # 암호문을 출력한다.


def Dencrypt():
    dStr,N=Input("복호화")

    #encrypted_text = "Mpwf!xjmm!gjoe!b!xbz/" # 암호문
    plain_text = ""             # 평문
    for c in dStr:                # 암호문의 모든 글자에 대하여 반복한다. 
        x = ord(c)                # 글자의 코드값을 구한다. 
        x -= N                     # 코드값을 하나 감소한다. 
        cc  = chr(x)             # 감소된 코드값에 해당하는 문자를 계산한다. 
        plain_text += cc     # 평문에 추가한다.

    PrintStr("복호화",plain_text) # 평문을 출력한다.
    

#Main Part
while True:
    Choice=input("1. 암호화\n2. 복호화\n0. 끝내기\n원하는 번호를 선택하세요 : ")
    if Choice=="1":
        Encrypt()
    elif Choice=="2":
        Dencrypt()
    else:
        print("수고하셨습니다.")
        break
    

 

참고풀이 결과]

 

 

 

 

 

대한민국의 아름다운 영토, 독도의 겨울

 

반응형

댓글