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)

s21day11 python笔记的更多相关文章

  1. Python笔记之不可不练

    如果您已经有了一定的Python编程基础,那么本文就是为您的编程能力锦上添花,如果您刚刚开始对Python有一点点兴趣,不怕,Python的重点基础知识已经总结在博文<Python笔记之不可不知 ...

  2. boost.python笔记

    boost.python笔记 标签: boost.python,python, C++ 简介 Boost.python是什么? 它是boost库的一部分,随boost一起安装,用来实现C++和Pyth ...

  3. 20.Python笔记之SqlAlchemy使用

    Date:2016-03-27 Title:20.Python笔记之SqlAlchemy使用 Tags:python Category:Python 作者:刘耀 博客:www.liuyao.me 一. ...

  4. Python笔记——类定义

    Python笔记——类定义 一.类定义: class <类名>: <语句> 类实例化后,可以使用其属性,实际上,创建一个类之后,可以通过类名访问其属性 如果直接使用类名修改其属 ...

  5. 13.python笔记之pyyaml模块

    Date:2016-03-25 Title:13.Python笔记之Pyymal模块使用 Tags:Python Category:Python 博客地址:www.liuyao.me 作者:刘耀 YA ...

  6. 8.python笔记之面向对象基础

    title: 8.Python笔记之面向对象基础 date: 2016-02-21 15:10:35 tags: Python categories: Python --- 面向对象思维导图 (来自1 ...

  7. python笔记 - day8

    python笔记 - day8 参考: http://www.cnblogs.com/wupeiqi/p/4766801.html http://www.cnblogs.com/wupeiqi/art ...

  8. python笔记 - day7-1 之面向对象编程

    python笔记 - day7-1 之面向对象编程 什么时候用面向对象: 多个函数的参数相同: 当某一些函数具有相同参数时,可以使用面向对象的方式,将参数值一次性的封装到对象,以后去对象中取值即可: ...

  9. python笔记 - day7

    python笔记 - day7 参考: http://www.cnblogs.com/wupeiqi/articles/5501365.html 面向对象,初级篇: http://www.cnblog ...

随机推荐

  1. Rancher2.0导入本地RKE Kubernetes集群图解

      简要说明: 使用RKE工具在192.168.3.161机器上,创建包含两个节点的Kubernetes集群,(192.168.3.162和192.168.3.163).RKE会自动在/home/用户 ...

  2. MySQL中update修改数据与原数据相同会再次执行吗?

    作者:powdba 来源:阿里云栖社区 一.背景 本文主要测试MySQL执行update语句时,针对与原数据(即未修改)相同的update语句会在MySQL内部重新执行吗? 二.测试环境 MySQL5 ...

  3. java jdk动态代理学习记录

    转载自: https://www.jianshu.com/p/3616c70cb37b JDK自带的动态代理主要是指,实现了InvocationHandler接口的类,会继承一个invoke方法,通过 ...

  4. 【JMeter】教程及技巧汇总(转载)

    转载地址:http://www.hissummer.com/jmeter-summary.html 参考/学习资料:http://www.yiibai.com/jmeter/jmeter_build_ ...

  5. faker 模块

    faker是python的一个第三方模块,是一个github上的开源项目. 主要用来创建一些测试用的随机数据 文档:https://faker.readthedocs.io/en/master/ind ...

  6. 『计算机视觉』mini深度学习框架实现

    一.项目简介 手动实现mini深度学习框架,主要精力不放在运算优化上,仅体会原理. 地址见:miniDeepFrame 相关博客 『TensorFlow』卷积层.池化层详解 『科学计算』全连接层.均方 ...

  7. wincc项目移植和复制解决办法

    wincc项目复制 wincc项目不支持直接复制,部分的后台数据库在活跃状态,直接复制wincc项目,会提示跳过活跃状态的数据库,当跳过活跃数据库时,复制的项目也是无效的.在wincc项目管理器中打不 ...

  8. MYSQL Statement violates GTID consistency: CREATE TABLE ... SELECT. 错误代码: 1786 问题

    1.在MYSQL中,执行建表语句时CREATE TABLE  aaaa  AS SELECT * FROM menu;  报: 错误代码: 1786Statement violates GTID co ...

  9. 纪念L.A. Zadeh教授

    扎德教授永远活在我们心中 汪 培 庄 辽宁工程技术大学,智能工程与数学研究院,阜新,123000 摘要 全球科技工作者都在悼念扎德教授的逝世.本文对扎德创立模糊数学的历史意义,他与中国同仁的关系和影响 ...

  10. node.js面试题大全-侧重后端应用与对Node核心的理解

    Node是搞后端的,不应该被被归为前端,更不应该用前端的观点去理解,去面试node开发人员.所以这份面试题大全,更侧重后端应用与对Node核心的理解. github地址: https://github ...