TIL Python -1

Lee·2021년 3월 2일
0

python

목록 보기
1/3

기초 강의 영상을 보면서 따라하다가 재밌어 보여서 정리.

Quiz) 사이트별로 비밀번호를 만들어 주는 프로그램을 작성하시오

예) http://naver.com
규칙1 : http:// 부분은 제외 => naver.com
규칙2 : 처음 만나는 점(.) 이후 부분은 제외 => naver
규칙3 : 남은 글자 중 처음 세자리(nav) + 글자 갯수(5) + 글자 내 'e' 갯수(1) + "!"로 구성

예) 생성된 비밀번호 : nav51!

여러 사이트들에 적용하기 위해서 우선 site라는 빈 리스트를 만들어주고 site를 입력하는 함수를 선언해서 그 안에 비밀번호를 구성하는 세가지 변수를 만들었다.

site = []
def autopwd(site):
    first
    second
    third
    return print(f"{first}{second}{third}!"
    
autopwd('http://naver.com')

규칙1 : http:// 부분 제외

domain = site[7:] #앞의 8자리 미만의 문자열은 제외하고 그 뒤의 문자열만 가져온다.

규칙2 : 처음 만나는 점(.) 이후 부분은 제외 => naver

domain = site[7:-4] #규칙 1에서 naver.com을 가져왔으므로 뒤에서 4자리 미만의 문자열은 제외하고 앞의 문자열만 가져온다.

규칙3 : 남은 글자 중 처음 세자리(first) + 글자 갯수(second) + 글자 내 'e' 갯수(third) + "!"로 구성

site = []
def autopwd(site):
    domain = site[7:-4]
    first = domain[:3] #naver에서 앞의 세글자만 가져온다.
    second = len(domain) #domain은 'n''a''v''e''r'로 구성된 리스트 이므로 domain의 길이를 구하면 글자 갯수를 알수 있다.
    third = domain.count('e') #'naver'에서 문자열 'e' 의 갯수를 가져온다.
    return print(f"{first}{second}{third}!")
    
autopwd('http://naver.com')

이렇게 하면 일단 완성은 되지만 다른 사이트들에 적용을 시키지 못 할수도 있다. 예를 들면 http://google.co.kr을 입력하면 어떻게 될까

deletehttp = site[7:] #여기까진 문제가 없다. http://는 똑같으니까
domain = deletehttp[:-4] #'.com'과 '.co.kr'의 문자열 갯수가 달라서 google.c라는 값을 가져오게 된다.
first = domain[:3] #앞의 글자는 변동이 없으므로 문제가 없다.
second = len(domain) #domain이 google.c라는 값을 가지고 있으므로 값이 8이 되버린다.
third = domain.count('e')
return print(f"{first}{second}{third}!") #결과값은 goo81!이 출력된다. 하지만 google은 6글자이므로 정상적인 코드라면 goo61!이 출력됬어야 옳다.

그래서 난 .을 기준으로 문자열을 나누어주는 명령어가 없을까 찾아보았다.
split()이라는 것을 찾았는데 이 명령어는 ()안의 문자를 기준으로 해서 각각의 문자열로 나누어 준다.

site.split('.') #site를 '.'을 기준으로 나누어서 ['http://google', 'co', 'kr']이 된다. 
domain = site.split('.')[0] #나는 뒤의 것들은 필요없기 때문에 맨 앞의 'http://google' 만 가져오겠다.
domain = sith.split('.')[0][7:] #앞의 http://도 필요없어서 'google' 만 빼온다.

이렇게 해서 최종 결과물은 아래와 같이 되었다.

site = []
def autopwd(site):
    domain = site.split('.')[0][7:]
    first = domain[:3]
    second = len(domain)
    third = domain.count('e')
    return print(f"{first}{second}{third}!")

autopwd('http://google.co.kr')

이제 autopwd() 괄호 안에 어떤 사이트를 넣어도 자동으로 비밀번호를 완성해줄 것 같다. 아마도?..

0개의 댓글

관련 채용 정보