s21day11 python笔记

一、函数小高级

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

    1. #示例一:
    2. def func():
    3. print(123)
    4. func_list = [func, func, func]
    5. # func_list[0]()
    6. # func_list[1]()
    7. # func_list[2]()
    8. for item in func_list:
    9. v = item()
    10. print(v)
    11. #示例二:
    12. def func():
    13. print(123)
    14. def bar():
    15. print(666)
    16. info = {'k1': func, 'k2': bar}
    17. info['k1']()
    18. info['k2']()
    19. #注意区别:
    20. def func():
    21. return 123
    22. func_list1 = [func,func,func]
    23. func_list2 = [func(),func(),func()]
    24. print(func_list1)
    25. print(func_list2)
  2. 函数可以当作参数进行传递

    1. #示例:
    2. def func(arg):
    3. v1 = arg()
    4. print(v1)
    5. def show():
    6. print(666)
    7. result = func(show)
    8. print(result)
    1. #面试题:多个函数的调用
    2. def func():
    3. print('话费查询')
    4. def bar():
    5. print('语音沟通')
    6. def base():
    7. print('业务办理')
    8. def show():
    9. print('流量查询')
    10. def test():
    11. print('人工服务')
    12. info = {
    13. 'f1': func,
    14. 'f2': bar,
    15. 'f3':base,
    16. 'f4':show,
    17. 'f5':test
    18. }
    19. choice = input('请选择要选择功能:')
    20. function_name = info.get(choice)
    21. if function_name:
    22. function_name()
    23. else:
    24. print('输入错误')

二、 lambda表达式

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

  2. 基本形式:

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

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

    1. # 练习题1
    2. USER_LIST = []
    3. def func0(x):
    4. v = USER_LIST.append(x)
    5. return v
    6. result = func0('alex')
    7. print(result) #None
    8. # 练习题2
    9. def func0(x):
    10. v = x.strip()
    11. return v
    12. result = func0(' alex ')
    13. print(result) #'alex'
    14. # 练习题3
    15. USER_LIST = []
    16. func1 = lambda x: USER_LIST.append(x)
    17. v1 = func1('alex')
    18. print(v1) #None
    19. print(USER_LIST) #['alex']
    20. # 练习题4
    21. func1 = lambda x: x.split('l')
    22. v1 = func1('alex')
    23. print(v1) #['a','ex']
    24. # 练习题5
    25. func_list = [lambda x:x.strip(), lambda y:y+199,lambda x,y:x+y]
    26. v1 = func_list[0]('alex ')
    27. print(v1) #'alex'
    28. v2 = func_list[1](100)
    29. print(v2) #299
    30. v3 = func_list[2](1,2)
    31. 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():转化为浮点型(小数)

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

    • min():找到最小值

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

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

        1. # 练习题 请通过分页对数据进行展示
        2. """
        3. 要求:
        4. 每页显示10条数据
        5. 让用户输入要查看的页面:页码
        6. """
        7. USER_LIST = []
        8. for i in range(1,836):
        9. temp = {'name':'你-%s' %i,'email':'123%s@qq.com' %i }
        10. USER_LIST.append(temp)
        11. # 数据总条数
        12. total_count = len(USER_LIST)
        13. # 每页显示10条
        14. per_page_count= 10
        15. # 总页码数
        16. max_page_num,a = divmod(total_count,per_page_count)
        17. if a>0:
        18. max_page_num += 1
        19. while True:
        20. pager = int(input('要查看第几页:'))
        21. if pager < 1 or pager > max_page_num:
        22. print('页码不合法,必须是 1 ~ %s' %max_page_num )
        23. else:
        24. start = (pager-1) * per_page_count
        25. end = pager * per_page_count
        26. data = USER_LIST[start:end]
        27. for item in data:
        28. print(item)
  5. 进制转换相关:

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

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

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

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

    1. #1字节等于8位
    2. # IP: 192.168.12.79 -> 001010010 . 001010010 . 001010010 . 001010010
    3. # 请将 ip = "192.168.12.79" 中的每个十进制数转换成二进制并通过,连接起来生成一个新的字符串。
    4. ip = "192.168.12.79"
    5. ip_list = ip.split('.') # ['192','168','12','79']
    6. result = []
    7. for item in ip_list:
    8. result.append(bin(int(item)))
    9. print(','.join(result))
    10. #面试题:
    11. # 请将 ip = "192.168.12.79" 中的每个十进制数转换成二进制:
    12. # 0010100100001010010001010010001010010 -> 十进制的值。
    13. # 3232238671
    14. ip = '192.168.12.79'
    15. v = ip.split('.')
    16. info = []
    17. for i in v:
    18. date = str(bin(int(i)))
    19. if len(date) > 10:
    20. date = date[-8:]
    21. else:
    22. count = 10 - len(date)
    23. date = date.replace('0b','0'*count)
    24. info.append(date)
    25. val = "".join(info)
    26. a = int(val,base=2)
    27. 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. 【BZOJ4031】小Z的房间

    Description 你突然有了一个大房子,房子里面有一些房间.事实上,你的房子可以看做是一个包含n*m个格子的格状矩形,每个格子是一个房间或者是一个柱子.在一开始的时候,相邻的格子之间都有墙隔着. ...

  2. Bootstrap 可视化HTML编辑器,summernote

    Bootstrap 可视化HTML编辑器之summernote,用其官网上的介绍就是"Super Simple WYSIWYG editor",不过在我看来,与bootstrap中 ...

  3. Qt: error: symbol(s) not found for architecture x86_64问题

    Mac上面报这个问题,结果是因为.h文件有函数没有实现.

  4. bootstrap-select——Methods

    参考资料:http://silviomoreto.github.io/bootstrap-select/methods/ Methods .selectpicker('val'):通过调用元素的val ...

  5. 获取动态代理生成的.class文件

    生成代理类,并写入硬盘:配置系统属性sun.misc.ProxyGenerator.saveGeneratedFile为true,代理类生成时将自动将生成的代理类写入硬盘 ? 1 2 3 4 5 6 ...

  6. C#实现基于ffmpeg加虹软的人脸识别

    关于人脸识别 目前的人脸识别已经相对成熟,有各种收费免费的商业方案和开源方案,其中OpenCV很早就支持了人脸识别,在我选择人脸 识别开发库时,也横向对比了三种库,包括在线识别的百度.开源的OpenC ...

  7. Codeforces 1064 D - Labyrinth

    D - Labyrinth 对于位置(i,j), j - c = R - L = const(常数), 其中R表示往右走了几步,L表示往左走了几步 所以R越大, L就越大, R越小, L就越小, 所以 ...

  8. legend2---开发日志10(ajax请求的方法是否同样会执行base控制器里面的方法)

    legend2---开发日志10(ajax请求的方法是否同样会执行base控制器里面的方法) 一.总结 一句话总结:会执行的,所以写base控制器里面的方法要注意,base控制器里面的方法要以查数据为 ...

  9. fcn+caffe+制作自己的数据集

    参考博客: http://blog.csdn.net/jacke121/article/details/78160398 以视网膜血管分割的数据集为例: 训练样本: 训练标签: 标签图的制作依据voc ...

  10. 压力测试+接口测试(工具jmeter)

      jmeter是apache公司基于java开发的一款开源压力测试工具,体积小,功能全,使用方便,是一个比较轻量级的测试工具,使用起来非常简单.因 为jmeter是java开发的,所以运行的时候必须 ...