비밀번호 설정

박상영·2020년 5월 14일
0

조건에 따라 주어진 비밀번호가 맞으면 True를 반환하고 아니면 False를 반환한다.

1. 비밀번호는 7글자 이상이여야한다.

def is_password(password: str):
	result = len(password)
    if result <= 6:
    	return False
    else:
    	return True

문자열의 길이를 result에 저장하여 길이가 7 이상인 값만 True를 반환한다.

2. 비밀번호는 7글자 이상, 문자열만 사용해선 안된다.

def is_password(password: str):
	result = len(password)
    word = sorted(password)
    if result <= 6:
    	return False
    else:
    	for i in word:
        	if i.isdigit():
            	return True
        return False
    return False

7글자 이상이 아니라면 False를 반환하고 아니라면 word의변수에 password를 sorted한 값을 저장하여 첫번째 값이 숫자인지 판별하여 숫자면 True 아니면 False를 반환했다.
sorted를 사용하면 숫자가 문자보다 앞으로 오는것을 확인하고 sorted를 사용했다.

3. 비밀번호는 7글자 이상, 문자열만 사용하면 안되고 숫자만 사용해도 안된다.

def is_password(password: str):
	result = len(password)
    word = sorted(password)
    if result <= 6:
    	return False
    else:
    	if password.isdigit():
        	return False
        else:
        	for i in word:
            	if i.isdigit():
                	return True
            return False
        return False
    return False

2번째 문제의 코드 사이에 password가 숫자로만 되어있는지 확인하는 isdigit()을 사용하여 숫자만 되어있으면 False를 반환하도록 하였다.

4. 비밀번호는 7글자 이상, 비밀번호에 숫자 하나 이상은 꼭 사용하여야하고, 숫자 또는 문자만 사용할 경우 9글자 이상이여야 한다.

def is_password(password: str):
    result = len(password)
    word = list(password)
    pass_replace = password.replace(' ','')
    if result <= 6:
    	return False
    else:
    	if password.isdigit() and len(word) < 8:
        	return False
        else:
            if password.isdigit() and len(word) > 8:
            	return True
            else:
            	if password.isalpha() and len(word) > 8:
                	return True

password에 길이가 9글자 미만이고 숫자로만 되어있으면 False를 반환하고
9글자 이상이면 True를 반환하였고 isalpha를 사용하여 문자만 사용하였을때의 값을 구분하는 if문을 사용했다. 주어진 문제에서 변수를 선언해야 할 것들을 하나하나 쪼개어 작성을 하다보니 코드는 길어지지만, 이렇게 작성을하면 isdigit과 isalpha를 왜 사용하였는지에대해 누구나 알 수 있을것같다.

                else:
                	word.sort()
                    for i in word:
                    	if i.isdigit():
                        	return True
                        else:
                            if len(pass_replace) > 8:
                            	return True
                            else:
                            	return False
                        return False
                    return False
                return False
            return False
        return False
    return False

그다음 전에 문제에 사용했을땐 sorted를 사용했지만 sort를 사용한 이유는 sorted는 str()에만 사용할 수 있고, sort는 list()에만 사용할 수 있어서 이다.
똑같이 숫자가 있으면 True를 반환한다. 공백을 제거하지 않은 코드를 사용했을때 'this is password'의 비밀번호는 에러가 났다. 공백의 존재를 알지 못했기때문이다. 공백을 사용하는 비밀번호는 없는걸로 알고있지만, 이 공백의 문제를 해결하기위해 먼저 공백을 제거한 값을 pass_replace에 저장하여 그 길이를 구해 9글자 이상일때는 True를 반환하게 하였다.

profile
backend

0개의 댓글