Python 程序检查信用卡号是否有效

pythonserver side programmingprogramming更新于 2025/12/23 14:04:17

假设我们有一个信用卡号。我们必须检查卡号是否有效。卡号具有某些属性 −

  • 它将以 4、5 和 6 开头

  • 它将是 16 位数字’ long

  • 数字必须仅包含数字

  • 它可以有四组数字,用 '-' 分隔

  • 它不能使用任何其他分隔符,如空格或下划线

  • 它不能有 4 个或更多连续的相同数字

因此,如果输入为 s = "5423-2578-8632-6589",则输出将为 True

为了解决这个问题,我们将遵循以下步骤 −

  • 如果 '-' 的数量s 中的大于 0,则
    • a := 以"-"分隔的部分列表
    • p:= 1
    • 如果 a 的大小不等于 4,则
      • p:= null
      • a:= 空白列表
    • 对于 a 中的每个 b,执行
      • 如果 b 的大小不等于 4,则
        • p:= null
        • 退出循环
  • 否则,
    • p := 搜索以 4 或 5 或 6 开头且其余为 15 位数字的子字符串
    • s := 从 s 中删除"-"
    • q := 搜索 4 个或更多连续字符相同的子字符串
    • 如果 p 不为空且 q 为空,则
      • 返回 True
    • 否则,
      • 返回 False

示例

让我们看看下面的实现以便更好地理解

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

相关文章


有用资源