微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Python:信用卡数字验证

如何解决Python:信用卡数字验证

我需要实现一个名为“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!

解决方法

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

,

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

使用字符串到整数逻辑

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。