【问题标题】:Python: Credit Card digits verificationPython:信用卡数字验证
【发布时间】:2021-09-24 01:45:30
【问题描述】:

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

  1. 第一个数字必须是 4。
  2. 第四位必须比第五位大一;请记住,由于格式为####-####-####,因此它们用破折号分隔。
  3. 所有数字的总和必须能被 4 整除。 4 如果将前两位视为两位数,第七位和第八位视为两位数,则它们的和必须为100 到目前为止,这是我想出的:
  def verify(number) : # do not change this line!

    # write your code here so that it verifies the card number
    number_string = number.replace("-","")
    cardnumber = [int(n) for n in number_string]

    if cardnumber[0] != 4:
      return 1

    elif cardnumber[3] != cardnumber[4] + 1: 
      return 2

    elif sum(map(int, cardnumber)) % 4 != 0:
      return 3

    elif cardnumber[0:2] + cardnumber[6:8] != 100:
      return 4

    return True
    # be sure to indent your code!

    input = "4002-1001-0000" # change this as you test your function
    output = verify(input) # invoke the method using a test input
    print(output) # prints the output of the function
    # do not remove this line!

【问题讨论】:

    标签: python


    【解决方案1】:

    您似乎忘记了您已经将cardnumber 转换为整数列表。它不再是字符串,因此您无需每次都使用int。要计算总和,您只需要 cardnumber[0]*10+cardnumber[1]cardnumber[7]*10+cardnumber[8]

    【讨论】:

    • 其他的限制呢,比如第一个数字必须是4,数字4/5之间有一个步?
    • 他已经有了这些。他可以删除int 调用,但代码已经存在。
    【解决方案2】:

    cardnumber 是一个列表。列表不能转换为整数。为此,您首先需要使用某种逻辑将列表转换为字符串和整数或直接转换为整数。

    使用字符串转整数逻辑

    elif int(''.join(cardnum[0:2])) + int(''.join(cardnum[7:9])) != 100:
    

    【讨论】:

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