day13函数进阶作业

  1. 写一个匿名函数,判断指定的年是否是闰年 (先直接用普通函数)

    year1=lambda n: (n%4==0 and n%100!=0 or n%400==0 )
    print(year1(2020))
    
  2. 写一个函数将一个指定的列表中的元素逆序( 如[1, 2, 3] -> [3, 2, 1])(注意:不要使用列表自带的逆序函数)

    list1=[1, 2, 3]
    # list2=map(lambda x:[ x for x in list1[-1::-1]],list1)
    # print(list(list2)[0])
    # list2=map(lambda x:list1[len(list1)-1-list1.index(x)],list1)
    # print(list(list2))
    list2=list(map(lambda x:list1[len(list1)-1-x],range(len(list1))))
    print(list2)[4, 3, 2, 1]
    
  3. 编写一个函数,计算一个整数的各位数的平方和

例如: sum1(12) -> 51的平方加上2的平方)    sum1(123) -> 14nums=123
result= map(lambda x:int(x)**2,str(nums))
print(sum(result))14
  1. 求列表 nums 中绝对值最小的元素
例如:nums = [-23, 100, 89, -56, -234, 123], 最大值是:-23
nums = [-23, 100, 89, -56, -234, 123]
result=min(nums,key=abs)
print(result)-23
  1. 已经两个列表A和B,用map函数创建一个字典,A中的元素是key,B中的元素是value

    A = ['name', 'age', 'sex']
    B = ['张三', 18, '女']
    新字典: {'name': '张三', 'age': 18, 'sex': '女'}
    
    A = ['name', 'age', 'sex']
    B = ['张三', 18, '女']
    result=list(map(lambda x,y:{x:y},A,B))
    print(result)[{'name': '张三'}, {'age': 18}, {'sex': '女'}]
    
  2. 已经三个列表分别表示5个学生的姓名、学科和班号,使用map将这个三个列表拼成一个表示每个学生班级信息的的字典

    names = ['小明', '小花', '小红', '老王']
    nums = ['1906', '1807', '2001', '2004']
    subjects = ['python', 'h5', 'java', 'python']
    结果:{'小明': 'python1906', '小花': 'h51807', '小红': 'java2001', '老王': 'python2004'}
    
    names = ['小明', '小花', '小红', '老王']
    nums = ['1906', '1807', '2001', '2004']
    subjects = ['python', 'h5', 'java', 'python']
    result=map(lambda x,y, z: {x:z+y},names,nums,subjects)
    print(list(result))[{'小明': 'python1906'}, {'小花': 'h51807'}, {'小红': 'java2001'}, {'老王': 'python2004'}]
    
  3. 已经一个列表message, 使用reduce计算列表中所有数字的和

    message = ['你好', 20, '30', 5, 6.89, 'hello']
    结果:31.89
    
    sum1=reduce(lambda x,y:x+y,list(map(lambda i:i if type(i)==int or type(i)==float else 0,message)),0)
    print(sum1)
    
    sum1=reduce(lambda x,y:x+(y if type(y)==int or type(y)==float else 0) ,message,0)
    print(sum1)
    
  4. 已经列表points中保存的是每个点的坐标(坐标是用元组表示的,第一个值是x坐标,第二个值是y坐标)

    points = [(10, 20), (0, 100), (20, 30), (-10, 20), (30, -100)
    ]
    

    1)获取列表中y坐标最大的点

    result=max(points,key=lambda x:x[1])
    print(result)(0, 100)
    

    2)获取列表中x坐标最小的点

    result=min(points,key=lambda x:x[0])
    print(result)(-10, 20)
    

    3)获取列表中距离原点最远的点

    result=max(points,key=lambda x:x[1]**2+x[0]**2)
    print(result)(30, -100)
    

    4)将点按照点到x轴的距离大小从大到小排序

    result=sorted(points,key=lambda x:x[1]**2)
    print(result)[(10, 20), (-10, 20), (20, 30), (0, 100), (30, -100)]
    
  5. 封装一个函数完成斗地主发牌的功能

    import random
    list1=['3','4','5','6','7','8','9','10','J','Q','K','A','2']
    list2=['方块','梅花','红桃','黑桃']
    list4=[]
    for i in list1:for j in list2:list4.append(j+i)
    list4.extend(['小王','大王'])   #生成有序的牌组
    list3=list4[:]    #复制有序列表list4
    print('------------------------华丽的分割线-------------------------')
    random.shuffle(list4) #打乱排序
    i1=iter(list4)
    player1=[]
    player2=[]
    player3=[]
    # 给三个玩家发牌  for i in range(17):player1.append(next(i1))player2.append(next(i1))player3.append(next(i1))
    a=random.randint(0,2)  
    # 随机给予某个玩家地主,发最后三张牌
    if a==0:player1.extend(list(i1))
    elif a==1:player2.extend(list(i1))
    elif a==2:player3.extend(list(i1))
    # 玩家到手的排,顺序混乱
    print(player1,len(player1))   
    print(player2,len(player2))
    print(player3,len(player3))
    print('------------------------华丽的分割线-------------------------')
    def sort_(player1,list0):   # 玩家手牌排序list3=list0[:]nums=[]for i in player1:if i in list3:nums.append(list3.index(i))for i in range(len(list3)-1,-1,-1):if i not in nums:list3.pop(i)return list3
    print((sort_(player1,list3)))  #玩家1的手牌排序
    print((sort_(player2,list3)))   #玩家2的手牌排序
    print((sort_(player3,list3)))   #玩家3的手牌排序['方块3', '方块4', '红桃4', '红桃5', '黑桃5', '红桃6', '方块8', '方块9', '梅花9', '方块10', '梅花10', '方块J', '方块K', '红桃K', '方块A', '黑桃A', '方块2']
    ['红桃3', '黑桃4', '梅花5', '黑桃6', '红桃7', '红桃9', '黑桃9', '红桃10', '黑桃10', '方块Q', '梅花Q', '红桃Q', '黑桃Q', '梅花K', '梅花A', '红桃A', '小王']
    ['梅花3', '黑桃3', '梅花4', '方块5', '方块6', '梅花6', '方块7', '梅花7', '黑桃7', '梅花8', '红桃8', '黑桃8', '梅花J', '红桃J', '黑桃J', '黑桃K', '梅花2', '红桃2', '黑桃2', '大王']


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部