0w0

[pythonchallenge] level0 level1 본문

Coding/pythonchallenge

[pythonchallenge] level0 level1

0w0 2016. 9. 17. 07:28
728x90
반응형

시작 페이지

http://www.pythonchallenge.com/about.php



level0

http://www.pythonchallenge.com/pc/def/0.html




2의 38 제곱을 구하라고합니다.



>>>

>>> 2**38

274877906944L

>>>


http://www.pythonchallenge.com/pc/def/274877906944.html





level1

http://www.pythonchallenge.com/pc/def/274877906944.html



알파벳을 오른쪽으로 두개씩 밀어주라는 의미로 보이십니까?

그렇게 안보이면 안되는데... 


a~z까지 천천히 써보시면서 이해하시는 것도 좋은 방법입니다.


g로 시작해서 spj.로 끝나는 저 보라색 문자열을 2칸씩 옆으로 이동시켜서 문자열을 얻으라는 힌트를 공책에 써져있는 내용으로 확인되어집니다.



소스 !!!


ori_str="""


g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj.

"""


modi_str=""


ran=len(ori_str)


# 파이썬에서 주석은 "#"입니다.


for i in range(0,ran):

#ori_str문자열의 0번 째 인덱스부터 마지막 인덱스까지 반복을 돌려줍니다.

     if ori_str[i].isalpha():  #원본에는 '.'과 ' ' 이 있기 때문에 먼저 알파벳인지 확인

          if ord(ori_str[i])+2>122:

               #ord 함수는 문자를 아스키코드 값으로 변환해주는 형변환 함수.

               #i 번째 oristr[i]를 아스키코드로 변환시켜서 +2 했을 경우 122즉 'z'를 넘을 경우

               modi_str=modi_str+chr(ord(ori_str[i])+2-26)

               

          else :

               modi_str=modi_str+chr(ord(ori_str[i])+2)

               #ori_str에서 i번째를 아스키코드로 변환시키고 수정 후 문자열로 형변환시키고 modi_str에 덧 붙여줍니다.

     else:

          modi_str=modi_str+ori_str[i]

          #원본에는 '.'과 ' ' 경우와 같이 알파벳이 아닐경우 바로 삽입


print("Original :: "+ori_str)

print("Modification :: "+modi_str)




결과!!!




=========================== RESTART: D:\다운로드\rt.py ===========================
Original :: 
g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj.

Modification :: 
i hope you didnt translate it by hand. thats what computers are for. doing it in by hand is inefficient and that's why this text is so long. using string.maketrans() is recommended. now apply on the url.



string.makertrans() 함수를 사용해서 하는걸 추천한다고합니다.

그리고 url 주소를 makertrans() 함수를 이용해서 다음 url를 얻으라는 것 같습니다.


url의 map.html에서 map을 2개 옆으로 옮기면 ocr를 나와서 ocr.html 하니 바로 level3 페이지가 나옵니다.

http://www.pythonchallenge.com/pc/def/ocr.html

일단 makertrans() 함수 사용을 해보면


소스 !!!

import string


ori_str="""g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj."""


modi_str=""


trans_table=str.maketrans("abcdefghijklmnopqrstuvwxyz","cdefghijklmnopqrstuvwxyzab")

#maketrans()를 사용해서 변경진행을 할 문자열을 작성


modi_str=ori_str.translate(trans_table)

#ori_str의 원본을 translate()함수로 maketrans에서 제작한 테이블을 기준으로 수정해서 modi_str에 저장


print(modi_str)



결과!!!

========================== RESTART: D:/다운로드/버릴거.py ==========================

i hope you didnt translate it by hand. thats what computers are for. doing it in by hand is inefficient and that's why this text is so long. using string.maketrans() is recommended. now apply on the url.

>>> 



ori_str에 map을 넣어서 같은 방식으로 해줍니다.


소스!!!


import string


ori_str="""map"""


modi_str=""


trans_table=str.maketrans("abcdefghijklmnopqrstuvwxyz","cdefghijklmnopqrstuvwxyzab")

#maketrans()를 사용해서 변경진행을 할 문자열을 작성


modi_str=ori_str.translate(trans_table)

#ori_str의 원본을 translate()함수로 maketrans에서 제작한 테이블을 기준으로 수정해서 modi_str에 저장


print(modi_str)



결과!!!
========================== RESTART: D:/다운로드/버릴거.py ==========================
ocr
>>> 




http://www.pythonchallenge.com/pc/def/map.html 에서 map 부분을 ocr로 고쳐서 이동하시면 됩니다.


http://www.pythonchallenge.com/pc/def/ocr.html

728x90
반응형

'Coding > pythonchallenge' 카테고리의 다른 글

[pythonchallenge] level4  (0) 2019.09.08
[pythonchallenge] level3  (0) 2019.09.03
[pythonchallenge] level2  (0) 2016.09.19
Comments