python学习_14

发布时间:2019-07-01 12:11:13编辑:auto阅读(1310)

    exec(str)
    可以执行多行语句,语句块,没有返回值

    command = """
    ... a= [1,2,3]
    ... for i in a:
    ... print(i)
    ... """
    exec(command)
    1
    2
    3

    a = [1,2,3]
    for i in a:
    ... exec("print(" + str(i) + ")")
    ...
    1
    2
    3

    eval(str)
    只能执行单行语句,有返回值

    a = eval("2*4")
    a
    8

    s = "print(" + str(10) + ")"
    eval(s)
    10

    函数引用
    函数名可以赋值给其他的变量引用,用引用加括号可以直接调用原函数

    a = abs
    a(-10)
    10

    def func(f):
    ... print(f(-1))
    ...
    func(abs)
    1

    函数解包传递参数
    解包元组传参

    def func(args):
    ... print(args)
    ...
    t = (2,3,4)
    func(
    t) #可以利用星号加上元组名传递参数
    (2, 3, 4)

     def add(a,b):return a+b
    ...
     add(*(1,2))
    3

    解包字典传参

    def func(kwargs):
    ... for k,v in kwargs.items():
    ... print(k,v)
    ...
    d = {"name":"huhongqiang","age":18,"sex":"m"}
    func(
    d)
    name huhongqiang
    age 18
    sex m

    def sub(a,b):
    ... return a - b
    ...
    sub(**{"a":3,"b":2})
    1

    习题8:[1,2,3,4,5] 变成 [2,3,4,5,1]
    方法1:

    a=[1,2,3,4,5]
    
    result = []
    result.append(a[-1])
    result.extend(a[0:4])
    print(result)

    方法2:

    result = []
    result.append(a[-1])
    for v in a[0:4]:
        result.append(v)
    print(result)

    方法3:

    a=[1,2,3,4,5]
    
    result = []
    
    for v in a[0:4]:
        result.append(v)
    
    result.insert(0,a[-1])
    print(result)

    习题9:统计字符串的个数

    l = [1,2,"s",[1,23],{1:2},(1,2),set([1,2]),"b"]
    
    str_number = 0
    for v in l:
        if isinstance(v,str):
            str_number += 1
    print(str_number)

    习题10:统计列表中所有类型数据的个数

    l = [1,2,"s",[1,23],{1:2},(1,2),set([1,2]),"b"]
    
    d = {"str":0,"list":0,"tuple":0,"int":0,"set":0}
    for v in l:
        if isinstance(v,str):
            d["str"] += 1
        elif isinstance(v,list):
            d["list"] += 1
        elif isinstance(v,tuple):
            d["tuple"] += 1
        elif isinstance(v,set):
            d["set"] += 1
        #elif isinstance(v,int):
            #d["int"] += 1
    print(d)

    习题11:求列表中所有数字的和,包括数字字符串

    a = [1,2,3,[4,5,6],{1:6,2:8,"a":"12",3:4}]
    
    result = 0
    for value in a:
        if isinstance(value,int):
            result += value
        elif isinstance(value,list):
            for v in value:
                if isinstance(v,int):
                    result += v
        elif isinstance(value,dict):
            for key in value.keys():
                if isinstance(key,int):
                    result += key
            for v in value.values():
                if isinstance(v,int):
                    result += v
    
                elif v.isdigit():
                    result += int(v)
    print(result)

    a = [1,2,3,[4,5,6],{1:6,2:8,"a":"12",3:4}]
    这个地方有个小坑,判断字典value值是否是数字的时候,要先把判断int的放在前面,否则会报错;

    result = 0
    for value in a:
        if isinstance(value,int):
            result += value
        elif isinstance(value,list):
            for v in value:
                if isinstance(v,int):
                    result += v
        elif isinstance(value,dict):
            for key in value.keys():
                if isinstance(key,int):
                    result += key
            for v in value.values():
                #这个先判断了是否是数字字符串,因为整数没有isdigit()方法
                if v.isdigit():
                    result += v
    
                elif isinstance(v,int):
                    result += int(v)
    print(result)  

关键字

上一篇: python学习(8)

下一篇: python注释