我正在尝试定义一个函数,该函数将包含一个变量n
,其中n
将是一串数字,例如"3884892993"
,函数的定义开始为is_true(n)
,但是如果 n 将是一个字符串is_true(n)
,那么一旦定义了字符串,我就可以使用示例字符串(例如n = "3884892993"
. 但是,当我使用时出现语法错误is_true(n)
。我只是想知道如何使用 n 的示例字符串来测试这个函数。
我要定义的整个函数如下所示:http: //oi44.tinypic.com/282i3qo.jpg但请记住,我是一个绝对的新手,所以很可能会有很多错误,但如果我能得到一些专家的帮助,我将不胜感激尽可能:)
def is_valid("n"): #n is the number to be checked.
number =
[int(y) for y in A] #converts the string into a list of useable digits.
altern1 = integer[-2::-2] #sets altern1 as one set of alternating digits.
double = [x*2 for x in altern1] #doubles each element of the list altern1.
sum1 = sum(double) # adds together all the doubled items of the list.
altern2 = integer[-1::-2] #sets altern2 as the other set of alternating digits.
return sum2 = sum(altern2)#sums the other set of alternating digits.
sumtotal = sum1 + sum2 #works out the total sum to be worked with.
for mod = sumtotal % 10: #works out remainder when sumtotal is divided by 10
if mod == 0 : #if remainder is zero sumtotal is a multiple of 10
print 'True' #sumtotal is a multiple of 10 therefore n is a credit card number
else:
print 'False' #sumtotal is NOT a multiple of 10 therefore not a valid credit card number
这是实际的问题:
验证数字的算法如下: (a) 从倒数第二个数字开始,向第一个数字移动,将每个交替数字加倍。(b) 将两位数相加,将 13 视为 1+3 等,并将结果添加到非两位数的总和 (c) 如果总和可被 10 整除,则该数字是有效的信用卡号。
编写并测试一个函数 is_valid(),该函数将信用卡号作为字符串作为参数(例如 is valid("49927398716")),并根据该号码是否为有效的信用卡号返回 True 或 False。