【发布时间】:2020-10-11 02:53:43
【问题描述】:
提示: 根据一些简单的算法,实现一个判断卡号是否有效的函数。假设信用卡号是一个由14个字符组成的字符串,格式为####-####-####,包括破折号,其中‘#’代表一个数字 0-9 之间,所以总共有 12 位数字。
目标:实现一个名为“verify”的函数,它接受一个参数 称为“数字”,然后检查以下规则:
- 第一个数字必须是 4。
- 第四位必须比第五位大一;请记住,这些 由于格式为####-####-####,因此用破折号分隔。
- 所有数字之和必须能被 4 整除。
- 如果您将前两位视为两位数,第七位和第八位 两位数的数字,它们的总和必须是 100。
如果条件不满足,则根据失败的规则返回“rule#X”。
我的进步:
def verify(number):
if len(number) != 14:
return False
if number[0] != 4:
print("rule#1")
if number[5] + 1 != number[3]:
print("rule#2")
if sum(number) != int:
print("rule#3")
if number[0,1] + number[6,7] != 100
print("rule#4")
return True #
input = "5000-0000-0000"
output = verify(input)
print(output)
我认为我在第三种和第四种情况下遇到困难,但不知道该怎么做/如何处理它。
【问题讨论】:
-
您不想打印字符串,而是想
return "rule#1"等。仅供参考 -
您能否提供更多输入值和相应预期输出的示例?
-
您首先要处理的是
number是一个字符串,而不是一个数字,因此您需要将相关部分转换为整数才能对它们进行求和。索引到字符串的正确方法是number[0:1],而不是number[0,1] -
要获得总和,您可以使用它;
sum(map(int, '1234-5678-9012'.replace('-', ''))) -
这能回答你的问题吗? Python Credit Card Validation
标签: python conditional-statements credit-card