python基础--算法题/*args、**kwargs (面试)ING

1、python基础--算法题(面试)ING

1、查找类:值+index、时间复杂度、栈、二分

2、排序类:二分(快速、归并)、冒泡
二分、递归、回调、嵌套
3、替换类:

4、去重+排序类

5、面向对象类:https://blog.csdn.net/lusainan_testgirl/article/details/130376872
士兵突击、家具房子、老师学生类

6、基础语法-str/list/dict题目:
转换、拼接、排序、更新、删除、新增、索引、切片

7、高级算法:数组、二叉树、堆、栈、线段树、链表、
二分:单调序列中查找和判定
https://blog.csdn.net/qq_42331828/article/details/124678481

其他算法题:
8、2002球,A、B两人抓球,每次抓2/4/8,如何保证A获胜

import random
def game():
    '''2002个球,每次抓球2/4/8,如何抓球获胜
            假设先抓,第一次抓4个
            后面根据对手抓球,保证每次抓球后剩余是6的倍数
            最后对手留我4个球或我留6个球,对手怎么抓都是我赢!
    '''
    balls = 2002
    balls -= 4
    player = "B"
    while balls >0:
        if player == "A":
            if balls==4:
                return True
            balls -=balls%6
            # print("A后balls",balls)
            if balls==6:
                return True
            player = "B"
        else:
            # B随机选择抓2、4或8个球  B[2,4,8] A[4,2,4]
            options = [2, 4, 8]
            choice = random.choice(options)
            balls -= choice
            # print("B后balls",balls)
            player = "A"
print(game())

9、三角形判定
10、红绿灯
11、回文数
12、奇点数

2、python基础--知识储备(面试)

2-1、*args、**kwargs    OK

1、*args **kwargs使用:可变参数和解包
====================================打包===========================================
def test1(*args):
    '''可变长度位置参数:任意多个参数打包成1个元组'''
    print(args)
    # for arg in args:
    #     print(arg)
test1(1,2,3)

def test2(**kwargs):
    """可变长度关键字参数:任意多个键值对参数打包成1个字典"""
    print(kwargs)
    # for k,v in kwargs.items():
    #     print(k,v)
test2(name="nancy",age=18)

def print_arguments(*args, **kwargs):
    for arg in args:
        print(arg)
    for key, value in kwargs.items():
        print(key, value)
print_arguments('apple', 'banana', 'orange', fruit='apple', color='red', price=1.99)

================================解包===============================================
def test3(a,b,c):
    """1个元组,解包成多个参数"""
    print(a+b+c)
args=(1,2,3)
test3(*args)

def tets4(name,age):
    '''1个字典,value解包成多个参数'''
    print(name,age)
kwargs={'name': 'nancy', 'age': 18}
tets4(**kwargs)#############mark:

=================================解包+打包=========================================
def print_arguments(*args, **kwargs):#打包
    for arg in args:
        print(arg)
    for key, value in kwargs.items():
        print(key, value)

fruits = ['apple', 'banana', 'orange']
details = {'color': 'red', 'price': 1.99}
print_arguments(*fruits, **details)##解包

=================================其他例子=========================================
1、接口自动化中test>case>api层 参数传递:(字典解包  键值对传递)
def fun_test(testdata):
    fun_case(testdata)#{}
def fun_case(data):
    fun_api(**data['json'])#字典{}解包 键值对
def fun_api(name,age):#多个参数 name和age名称固定和data['json']解包对应
    print(name,age)

data={'title': '市场搜索1-没有参数', 'json': {"name":"nancy","age":18}, 'expected': {'code': 0}}
fun_test(data)
# fun_api(name="lisa",age=9)#fun_api(1,2)


2、优化后(字典解包键值对传递 >又 键值对打包成字典:[可变参数]对于非必填参数很好用)
def fun_test(testdata):
    fun_case(testdata)#{}
def fun_case(data):
    fun_api_update(**data['json'])#字典{}解包 键值对
def fun_api_update(**kwargs):
'''可以随便多少参数'''
    #print(kwargs)
    d={
        "url":"https://www.baidu.com",
        "method":"get",
        "params":{}
    }
    d['params'].update(kwargs)
    print(d)


data={'title': '市场搜索1-没有参数', 'json': {"name":"nancy","age":18}, 'expected': {'code': 0}}
fun_test(data)


来总结一下:1打包 2解包
1.1、函数声明的参数列表中加单星号,即f(*x)则表示x为元组,所有对x的操作都应将x视为元组类型
进行。所有传入f(*x)的变量都将作为元组x的元素之一.
1.2、双星号同上,区别是x视为字典.
2.1、在变量前加单星号表示将元组(列表、集合)拆分为单个元素。
2.2、双星号同上,区别是目标为字典,字典前加单星号的话可以得到“键”.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值