문자열에 문자와 숫자가 모두 포함되어 있는지 확인하는 방법

Nov 17 2020

문자열 경우 확인하는 방법 엄격 문자와 숫자가 모두 포함?

다음은 충분하지 않습니까?

def containsLettersAndNumber(input):
    if input.isalnum():
        return True
    else:
        return False


isAlnum = containsLettersAndNumber('abc')           # Should return false
isAlnum = containsLettersAndNumber('123')           # Should return false
isAlnum = containsLettersAndNumber('abc123')        # Should return true
isAlnum = containsLettersAndNumber('abc123$#')      # Should return true

그것은주의하시기 바랍니다 해야 문자와 숫자를 모두 포함

답변

2 JonKiparsky Nov 17 2020 at 03:13

문자열 메서드 만 사용하는 가장 간단한 방법 :

def containsLetterAndNumber(input):
    return input.isalnum() and not input.isalpha() and not input.isdigit()

input.isalnumS의 모든 문자가 영숫자이면 true를 input.isalpha반환하고, 입력에 알파벳이 아닌 문자 input.isdigit가 포함되어 있으면 false를 반환하고, 입력에 숫자가 아닌 문자가 포함되어 있으면 false를 반환합니다.

따라서 input영숫자가 아닌 문자 가 포함 된 경우 첫 번째 검사는 거짓입니다. 만약 not input.isalpha()그것이 input적어도 하나의 알파벳이 아닌 문자 를 포함하고 있다는 것을 안다면 -우리가 확인했기 때문에 숫자 여야합니다 input.isalnum(). 마찬가지로, not input.isdigit()True이면 input알파벳 문자 여야하는 숫자가 아닌 문자가 하나 이상 포함되어 있음을 알 수 있습니다.

7 Aplet123 Nov 17 2020 at 00:26

문자를 찾았는지 번호를 찾았는지 반복하고 추적 할 수 있습니다.

def containsLetterAndNumber(input):
    has_letter = False
    has_number = False
    for x in input:
        if x.isalpha():
            has_letter = True
        elif x.isnumeric():
            has_number = True
        if has_letter and has_number:
            return True
    return False

또는 더 비단뱀 적이지만 더 느린 방법 :

def containsLetterAndNumber(input):
    return any(x.isalpha() for x in input) and any(x.isnumeric() for x in input)