【问题标题】:Python: Verify Credit Card digitsPython:验证信用卡数字
【发布时间】:2020-09-15 21:12:08
【问题描述】:

我需要实现一个名为“verify”的函数,它接受一个参数 称为“数字”,然后检查以下规则:

  1. 第一个数字必须是 4。
  2. 第四位必须比第五位大一;请记住,这些 由于格式为####-####-####,因此用破折号分隔。
  3. 所有数字之和必须能被 4 整除。
  4. 如果将前两位视为两位数,第七位和第八位 两位数的数字,它们的总和必须是 100

这是我目前想出的:

def verify(number): # do not change this line!

  list_number=list(number.split(''))
  Check=false

# write your code here so that it verifies the card number

    if list_number[0]==4:
    if list_number[3]==list_number[5]+1:
    if list_number.sum() % 4==0:
    if int(str(list_number[0])+str(list_number[1]))+int(str(list_number[7])+str(list_number[8])) ==100:

    Check = true

    else:
    check = false

input = "4094-3460-2754" # change this as you test your function
output = verify(input) # invoke the method using a test input
print(output) # prints the output

【问题讨论】:

  • 除了不确定我的代码是否正确之外,我还收到此错误:“第 8 行错误:如果 list_number[0]==4: ^ IndentationError: unexpected indent”
  • 您的 else 没有正确缩进,并且您的 if 语句都没有正文.....您的代码远非可运行。您的 ifs 也比之前的代码缩进更多。

标签: python validation numbers rules credit-card


【解决方案1】:

您的代码中似乎存在一些基本错误。我会为你列出来:

  1. 布尔值以大写开头

  2. if 和 else 语句后没有缩进

  3. 您的输出将始终打印 none,因为您的函数不返回任何内容。

def verify(number):
    list_number=list(number)
    if list_number[0]==4 and list_number[3]==list_number[5]+1 and list_number.sum() % 4==0 and int(str(list_number[0])+str(list_number[1]))+int(str(list_number[7])+str(list_number[8])) ==100:
        return True
     else:
        return False
input = "4094-3460-2754"
output = verify(input) 
print(output)```


【讨论】:

    【解决方案2】:

    这就是你需要的。函数中的每个 if 语句都对应您指定的条件。

    def verify(number):  # do not change this line!
        number_string = number.replace("-", "")
        list_number = [int(n) for n in number_string]
    
        if not list_number[0] == 4:
            return False
    
        if not list_number[3] - list_number[4] == 1:
            return False
    
        if not sum(list_number) % 4 == 0:
            return False
    
        if not int(number_string[0:2]) + int(number_string[6:8]) == 100:
            return False
    
        return True
    
    
    input = "4094-3460-2754"
    output = verify(input)
    print(output)
    # True
    
    
    

    【讨论】:

      【解决方案3】:

      你的代码写得不好

      list_number = "4094-3460-2754"
      list_number = list_number.replace('-','')
      
      if list_number[0]=='4' and int(list_number[3])==int(list_number[5])+1 and list_number.sum() % 4==0 and int(list_number[0])+int(list_number[1])==int(list_number[7])+int(list_number[8]):
          check = True
      else:
          check = False
      

      【讨论】:

        猜你喜欢
        • 2021-09-24
        • 2017-04-02
        • 2014-08-14
        • 2014-01-30
        • 2015-06-04
        • 2016-01-22
        • 2011-01-24
        • 2012-08-14
        • 2016-11-15
        相关资源
        最近更新 更多