Hardner

Python Challenge: level 3 본문

Computer/python

Python Challenge: level 3

Hardner 2019. 1. 5. 05:39
SMALL

The Python Challenge: level 3

 

아래 글의 해석: "하나의 소문자, 정확히 3개의 큰 보디가드에게 좌우가 둘러싸여져있다. "

사진을 참고해서 의역해보면 "하나의 소문자 좌우에 3개의 대문자로 둘러싸여져있다."란 말 같습니다.

이외에 별다른 내용이 없으므로 페이지 소스를 열어서 코드를 확인해 보겠습니다.

 

 

 

HTML 태그 아래를 보면 이렇게 긴 주석이 발견됩니다.

직접 하나하나 찾을 수도 있지만 주석의 길이가 이미지보다 훨씬 길고 파이썬 공부를 위해 하는 것이기 때문에 직접 코딩을 해보았는데 1번은 가지고 있는 지식을 토대로 한 것이고, 2번은 1번을 풀고 코딩을 간략화 하고 싶어서 정규표현식을 공부하여 코딩한 내용입니다.

 

더보기

file = ''' 주석 문장 '''

 

cnt = 0        # 하나의 소문자를 걸러내기 위한  카운팅 변수.

lar_cnt = 0    # 대문자 3개인지 확인하는 변수.

li = []        # 찾은 소문자를 모아두기 위한 리스트.

bool = False   # 리스트에 참과 거짓에 따른 값 입력, 값 삭제를 위한 변수.

 

for i in file:

    if 'A'<= i and i <='Z':

        lar_cnt +=1

        

        if lar_cnt >3:

            cnt = 0

            if cnt == 6:

                li.pop()

                bool = False

                

        if lar_cnt <=3:

            if cnt < 3:

               cnt += 1

            elif cnt<6 and bool:

                cnt += 1

            else :

                cnt = 0

            

    elif 'a'<= i and i<='z':

        lar_cnt = 0

        if cnt == 6:

            cnt = 3

            bool = False

        if cnt == 3 and not(bool):

            bool = True

            li.append(i)

        elif cnt>=3:

            li.pop()

            cnt = 0

            bool = False

        else :

            cnt = 0

        

 

if bool:

    li.pop()

    

print(li)        # 출력결과.

 

 

더보기

import re

 

file = ''' 주석 문장 '''

 

result = re.findall('[a-z][A-Z]{3}[a-z][A-Z]{3}[a-z]',file)

result = re.findall('[A-Z][a-z][A-Z]',''.join(result))

result = re.findall('[a-z]',''.join(result))

 

print(''.join(result)) # 출력결과

 

 

 

출력결과인 linkedlist를 URL에 http://www.pythonchallenge.com/pc/def/linkedlist.html 이렇게 입력하시면

 

위와 같은 페이지로 이동할텐데

URL을 http://www.pythonchallenge.com/pc/def/linkedlist.php로 바꾸어 입력하시면 문제가 해결됩니다.

 

LIST

'Computer > python' 카테고리의 다른 글

Python Challenge: level 2  (2) 2019.01.03
Python Challenge : level 1  (2) 2018.12.31
Python Challenge : warming up  (1) 2018.12.28