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

신용 카드 번호를 확인하는 Python 프로그램이 유효한지 여부

<시간/>

신용 카드 번호가 있다고 가정합니다. 카드 번호가 유효한지 여부를 확인해야 합니다. 카드 번호에는 특정 속성이 있습니다 -

  • 4, 5, 6으로 시작합니다.

  • 길이는 16자리입니다.

  • 숫자는 숫자만 포함해야 합니다.

  • '-'로 구분된 4개의 그룹으로 된 숫자가 있을 수 있습니다.

  • 공백이나 밑줄과 같은 다른 구분 기호를 사용하면 안 됩니다.

  • 동일한 숫자가 4개 이상 연속되어서는 안 됩니다.

따라서 입력이 s ="5423-2578-8632-6589"와 같으면 출력은 True가 됩니다.

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

  • s의 '-' 개수가 0보다 크면
    • a :="-"로 구분된 부분 목록
    • p:=1
    • 의 크기가 4와 같지 않으면
      • p:=null
      • a:=빈 목록
    • 각 b에 대해 다음을 수행합니다.
      • b의 크기가 4와 같지 않으면
        • p:=null
        • 루프에서 나오다
  • 그렇지 않으면
    • p :=4, 5 또는 6으로 시작하고 나머지는 15자리 숫자인 부분 문자열 검색
    • s :=s에서 "-" 제거
    • q :=4개 이상의 연속 문자가 동일한 부분 문자열 검색
    • p가 null이 아니고 q가 null이면
      • 참 반환
    • 그렇지 않으면
      • 거짓을 반환

예시

더 나은 이해를 위해 다음 구현을 살펴보겠습니다.

import re

def solve(s):
   if s.count("-")>0:
      a = s.split("-")
      p=1
      if len(a)!=4:
         p=None
         a=[]
      for b in a:
         if len(b)!=4:
            p=None
            break
         else:
            p = re.search("[456][0-9]{15}",s)
         s = s.replace("-","")
         q = re.search(".*([0-9])\\1{3}.*",s)

         if p!=None and q==None:
            return True
         else:
            return False

s = "5423-2578-8632-6589"
print(solve(s))

입력

"5423-2578-8632-6589"

출력

False