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:

最新更新