Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 주어진 비밀번호가 기준을 충족하는지 확인하는 프로그램

<시간/>

암호를 나타내는 문자열 s가 있다고 가정하고 암호 기준을 확인해야 합니다. 따라야 할 몇 가지 규칙이 있습니다. −

  • 비밀번호 길이는 최소 8자, 최대 20자입니다.
  • 비밀번호에 하나 이상의 숫자가 포함되어 있습니다.
  • 비밀번호에는 하나 이상의 소문자와 하나의 대문자가 포함되어 있습니다.
  • 비밀번호에 !"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~
  • 와 같은 특수 문자가 하나 이상 포함되어 있습니다.
  • 비밀번호에는 탭이나 새 줄과 같은 다른 문자가 포함되지 않습니다.

따라서 입력이 "@bCd12#4"와 같으면 출력이 True가 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • a:=0, b:=0, c:=0, d:=0
  • 비밀번호 크기 <8 또는 비밀번호 크기> 20인 경우
    • 거짓을 반환
  • 암호의 각 문자 i에 대해 다음을 수행합니다.
    • i가 대문자이면
      • a :=a + 1
    • 그렇지 않으면 i가 소문자이면
      • b :=b + 1
    • 그렇지 않으면 이러한 특수 문자 집합에서 i가 '"!"#^modAND\'() *+,- ./:;<=>?@[\\]XOR_`{OR}~"'인 경우
      • c :=c + 1
    • 그렇지 않으면 i가 숫자일 때
      • d :=d + 1
  • a>=1이고 b>=1이고 c>=1이고 d>=1이고 a+b+c+d가 암호의 크기와 같으면
    • 참 반환
  • 그렇지 않으면
    • 거짓을 반환

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

예시

class Solution:
   def solve(self, password):
      a=0
      b=0
      c=0
      d=0
      if len(password)<8 or len(password)>20:
         return False
      for i in password:
         if i.isupper():
            a+=1
         elif i.islower():
            b+=1
         elif i in '"!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~"':
            c+=1
         elif i.isdigit():
            d+=1
      if a>=1 and b>=1 and c>=1 and d>=1 and
         a+b+c+d==len(password):
      return True
      else:
         return False
s = "@bCd12#4"
ob = Solution()
print(ob.solve(s))

입력

"@bCd12#4"

출력

True