欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

s21day11 python笔记

程序员文章站 2022-04-19 22:42:06
s21day11 python笔记 一、函数小高级 1. 函数名可以当作变量来使用 2. 函数可以当作参数进行传递 二、 lambda表达式 1. 作用:用于表达简单的函数 2. 基本形式: 3. 重点: lambda表达式只能用一行表示函数 用lambda表达式表示函数时,无法设置新变量,只能用参 ......

s21day11 python笔记

一、函数小高级

  1. 函数名可以当作变量来使用

    #示例一:
    def func():
        print(123)
    
    func_list = [func, func, func]
    # func_list[0]()
    # func_list[1]()
    # func_list[2]()
    for item in func_list:
        v = item()
        print(v)
    
    #示例二:
    def func():
        print(123)
    def bar():
        print(666)
    
    info = {'k1': func, 'k2': bar}
    info['k1']()
    info['k2']()
    
    #注意区别:
    def func():
        return 123
    
    func_list1 = [func,func,func]
    func_list2 = [func(),func(),func()]
    print(func_list1)
    print(func_list2)
  2. 函数可以当作参数进行传递

    #示例:
    def func(arg):
        v1 = arg()
        print(v1)    
    def show():
        print(666)
    
    result = func(show)
    print(result)
    #面试题:多个函数的调用
    def func():
        print('话费查询')
    def bar():
        print('语音沟通')
    def base():
        print('业务办理')
    def show():
        print('流量查询')
    def test():
        print('人工服务')
    
    info = {
        'f1': func,
        'f2': bar,
        'f3':base,
        'f4':show,
        'f5':test
    }
    choice = input('请选择要选择功能:')
    function_name = info.get(choice)
    if function_name:
        function_name()
    else:
        print('输入错误')

二、 lambda表达式

  1. 作用:用于表达简单的函数

  2. 基本形式:

    #三元运算,为了解决简单的if else的情况
    if 1 == 1:
        a = 123
    else:
        a = 456
    #用三元运算表示:
    a =  123  if 1 == 1 else 456
    
    #lambda表达式,为了解决简单函数的情况
    def func(a1,a2):
        return a1 + a2 
    #用lambda表达式表示:
    func = lambda a1,a2: a1+a2          #隐含了return
  3. 重点:

    • lambda表达式只能用一行表示函数
    • 用lambda表达式表示函数时,无法设置新变量,只能用参数作变量
    • 列表所有方法基本上都是返回none,字符串的所有方法基本上都是返回新值
  4. 练习题

    # 练习题1
    user_list = []
    def func0(x):
        v = user_list.append(x)
        return v 
    result = func0('alex')
    print(result)              #none
    
    # 练习题2
    def func0(x):
        v = x.strip()
        return v 
    result = func0(' alex ')
    print(result)               #'alex'
    
    # 练习题3
    user_list = []
    func1 = lambda x: user_list.append(x)
    v1 = func1('alex')
    print(v1)                    #none
    print(user_list)             #['alex']
    
    # 练习题4
    func1 = lambda x: x.split('l')
    v1 = func1('alex')
    print(v1)                    #['a','ex']
    
    # 练习题5
    func_list = [lambda x:x.strip(), lambda y:y+199,lambda x,y:x+y]
    v1 = func_list[0]('alex ')
    print(v1)                    #'alex'
    v2 = func_list[1](100)
    print(v2)                    #299
    v3 = func_list[2](1,2)
    print(v3)                    #3

三、内置函数

函数分为自定义函数和内置函数

python内置函数分类:

  1. 强制转换:int() / str() / bool() / list() / tuple() / dict() / set()

  2. 输入输出:input() / print()

  3. 其他:len() / open() / range() / id() / type()

  4. 数学相关:

    • abs():计算绝对值

    • sum():求和

    • float():转化为浮点型(小数)

      v = 55
      v1 = float(55)
      print(v1)        #55.0
      • 补充:int(55.5) #只保留整数:55
    • max():找到最大值

    • min():找到最小值

    • divmod():取两数相除的商和余数

      #示例:
      a,b = divmod(1001,5)
      print(a,b)          #a=200,b=1
      • 注意:divmod在分页展示时用得比较多

        # 练习题  请通过分页对数据进行展示
        """
        要求:
            每页显示10条数据
            让用户输入要查看的页面:页码
        """
        
        user_list = []
        for i in range(1,836):
            temp = {'name':'你-%s' %i,'email':'123%s@qq.com' %i }
            user_list.append(temp)
        
        # 数据总条数
        total_count = len(user_list)
        
        # 每页显示10条
        per_page_count= 10
        
        # 总页码数
        max_page_num,a = divmod(total_count,per_page_count)
        if a>0:
            max_page_num += 1
        
        while true:
            pager = int(input('要查看第几页:'))
            if pager < 1 or pager > max_page_num:
                print('页码不合法,必须是 1 ~ %s' %max_page_num )
            else:
                start = (pager-1) * per_page_count
                end = pager * per_page_count
                data = user_list[start:end]
                for item in data:
                    print(item)
  5. 进制转换相关:

    • bin():将十进制转换成二进制

    • oct():将十进制转换成八进制

    • int():将其他进制转换成十进制

      • 默认:base = 10
      # 二进制转化成十进制
      v1 = '0b1101'
      result = int(v1,base=2)         #base=2说明读取的是二进制
      print(result)
      
      # 八进制转化成十进制
      v1 = '0o1101'
      result = int(v1,base=8)
      print(result)
      
      # 十六进制转化成十进制
      v1 = '0x1101'
      result = int(v1,base=16)
      print(result)
    • hex():将十进制转换成十六进制

    #1字节等于8位
    # ip: 192.168.12.79  ->  001010010 . 001010010 . 001010010 . 001010010
    
    # 请将 ip = "192.168.12.79" 中的每个十进制数转换成二进制并通过,连接起来生成一个新的字符串。
    ip = "192.168.12.79"
    ip_list = ip.split('.') # ['192','168','12','79']
    result = []
    for item in ip_list:
        result.append(bin(int(item)))
    print(','.join(result))
    
    
    #面试题:
    # 请将 ip = "192.168.12.79" 中的每个十进制数转换成二进制: 
    #          0010100100001010010001010010001010010 -> 十进制的值。
    # 3232238671
    ip = '192.168.12.79'
    v = ip.split('.')
    info = []
    for i in v:
        date = str(bin(int(i)))
        if len(date) > 10:
            date = date[-8:]
        else:
            count = 10 - len(date)
            date = date.replace('0b','0'*count)
        info.append(date)
    val = "".join(info)
    a = int(val,base=2)
    print(a)