我是python新手,我有一个作业来验证信用卡号码。我完成了前两个条件,但我有3个和4个条件。感谢任何帮助
条件:
def verify(number) : # do not change this line!
# write your code here so that it verifies the card number
#condtion 1
if number[0] != '4':
return "violates rule #1"
#condition 2
if int(number[3]) != (int(number[5]) + 1) :
return "violates rule #2"
#condition 3
for i in number:
if i >= '0' and i !='-':
# be sure to indent your code!
return True # modify this line as needed
input = "4037-6000-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!
预期产出:
^{pr2}$
对于条件3
Python中的字符串是iterable,这意味着您可以在
for
循环中传递它们。循环中的每个元素都是字符串中的一个字符。所以如果你这么做了你会得到:
^{pr2}$使用这个方法,您可以计算输入中每个数字的和,并检查它是否可以被4整除。需要注意的两件事是,首先需要将字符转换为整数(使用
int
)。你不能这么做但你能做到
您还需要使用
if
从总和中排除“-”。在其次,我们在Python中使用模(
%
)检查两个数字是否可以整除。结果是余数,如果余数为0,则第一个参数可被第二个参数整除。在对于条件4
Python中的字符串除了可以iterable之外,还可以通过它们的索引(从0开始)来访问它们
因此,您可以访问多个字符并将它们视为整数:
现在你可以把它们加起来,看看它们是否等于100。在
对于规则3,需要对所有数字求和,并检查除以4的余数是否为零:
对于规则4,可以得到子字符串的int的和:
^{pr2}$完整代码:
我更喜欢先从数字中删除破折号
-
,这样可以很容易地处理。你也可以不用像你试过的那样去掉它。在您可以阅读
split()
和join()
here。在现在,正如您所提到的,第一个条件很简单,您可以简单地检查第一个数字是否为4。在
^{pr2}$第二个条件也很简单:
对于第三个条件,你只需要找到数字中每个数字的和。由于我们已经将数字转换为整数数组,因此使用
sum()
函数也很容易:现在,对于第四个条件,您需要将第一个和第二个数字视为两个数字,并与第七个和第八个数字相同。您可以将其转换为两位数字,如下所示:
现在您可以检查它们的总和是否为100:
因此,合并后的程序变为(合并了一些步骤):
但是上面的程序只会给出第一个失败的条件。如果需要,可以进一步修改,如下所示:
您可以再次修改它来显示通过的条件。我把它留给你!在
相关问题 更多 >
编程相关推荐