第三章 7-2 查验身份证

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]
发布了80 篇原创文章 · 获赞 6 · 访问量 7639

猜你喜欢

转载自blog.csdn.net/qq_33749437/article/details/104880377