n=int(input())
cd=[]
for i in range(n):
cardID=input()
cd.append(cardID)
weight=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]
dic = dict(zip(list(range(11)),[1,0,'X',9,8,7,6,5,4,3,2]))
flag=1
for ID in cd:
IDlist = list(ID)
l_last = IDlist.pop(-1)
l_str = ''.join(IDlist)
if not l_str.isdigit():
print(ID)
flag = 0
else:
l_arr = list(map(int,IDlist))
s = sum(map(lambda x,y:x*y, weight,l_arr))
z = s%11
if str(dic[z]) != l_last:
print(ID)
flag=0
if flag == 1:
print('All passed')
map()
函数
map(function, iterable, ...)
function:函数
iterable:一个或多个序列(迭代器)
>>>def square(x) : # 计算平方数
... return x ** 2
...
>>> map(square, [1,2,3,4,5]) # 计算列表各个元素的平方
[1, 4, 9, 16, 25]
匿名函数
python 使用 lambda 来创建匿名函数。
-lambda只是一个表达式,函数体比def简单很多。
-lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
-lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。
-虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
lambda [arg1 [,arg2,.....argn]]:expression
>>> map(lambda x: x ** 2, [1, 2, 3, 4, 5]) # 使用 lambda 匿名函数
[1, 4, 9, 16, 25]
# 提供了两个列表,对相同位置的列表数据进行相加
>>> map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
[3, 7, 11, 15, 19]