zoukankan      html  css  js  c++  java
  • day11

    5.6 函数作为变量

    def func():
       print(123)

    v1=func
    v1() # 123

    # 易于混淆:
    def func():
       return 123

    func_list1 = [func,func,func]
    func_list2 = [func(),func(),func()]

    print(func_list1) # ['内存地址','内存地址','内存地址'] 未加括号未调用
    print(func_list2) # [123,123,123] 加了括号才调用

    info = {
       'k1':func,
       'k2':func(),
    }

    print(info)

    5.7 函数作为参数

    def func(a):   
       print(a)
       
    func(1) # 1
    func([1,2,3,4]) # [1,2,3,4] # 变量可以是任何类型

    def show():  
       return 999

    func(show) # 999   show的返回值是999   把999作为 参数   如果函数没有写出返回值,那么返回值为None

    def func(arg):
       v1 = arg()
       print(v1)
       
    def show():
       print(666)
       
    func(show) # 666 None   show 打印了666,返回值None,传入参数None给func,v1=None
    def func(arg):
       v1 = arg()
       print(v1)
       
    def show():
       print(666)
       
    result = func(show)
    print(result)   # 666 None None 首先按照顺序 先调用show,打印666,返回None,传入func,V1=None,打印V1,返回None,最终再打印None

    5.8 lambda 表达式

    func = lambda 参数(若有): 函数体  (默认返回值赋值给函数名func,可以理解为func是一个变量)
    # lambda表达式用来表示简单的函数,函数体只能有一行。

    # 三元运算,为了解决简单的if else的情况,如:
    if 1 == 1:
       a = 123
    else:
       a = 456

    a =  123  if 1 == 1 else 456

    # lambda表达式,为了解决简单函数的情况,如:
    def func(a1,a2):
       return a1 + 100

    func = lambda a1,a2: a1+100
    # 一些示例
    func1 = lambda : 100

    func2 = lambda x1: x1 * 10

    func3 = lambda *args,**kwargs: len(args) + len(kwargs)

    DATA = 100
    func4 = lambda a1: a1 + DATA
    v = func4(1)
    print(v)


    DATA = 100
    def func():
       DATA = 1000
       func4 = lambda a1: a1 + DATA
       v = func4(1)
       print(v)
    func()


    func5 = lambda n1,n2: n1 if n1 > n2 else n2
    v = func5(1111,2)
    print(v)

    5.9 内置函数

    5.9.1 其他类

    ··· len() 计算长度

    ··· open() 打开文件

    ··· range() 产生序列

    ··· id() 查看内存地址

    ··· type() 查看类型

    5.9.2 输入输出类

    ··· input() 输入

    ··· print() 输出

    5.9.3 强制转换类

    ··· str()

    ··· int()

    ··· bool()

    ··· list()

    ··· tuple()

    ··· dict()

    ··· set()

    5.9.4 数学相关

    ··· abs() 绝对值

    v=abs(1)
    print(v) # 1
    v=abs(-1)
    print(v) # 1

    ··· float() 转换为浮点数

    v=55
    v1=float(v)
    print(v1) # 55.0

    v=55.5
    v1=int(v)
    print(v1) # 55

    ··· max / min 最大值或最小值

    v=[1,2,3,4]
    v1=max(v)
    v2=min(v)
    print(v1) # 4
    print(v2) # 1

    ··· sum() 求和

    v=[1,2,3,4]
    v1=sum(v)
    print(v1) # 10

    ··· divmod() 求商和余数

    a,b=divmod(101,5)
    print(a,b) # (20,1)

    # 练习题 请通过分页对数据进行展示
    """
    要求:
      每页显示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:
           """
          # 第1页:USER_LIST[0:10] -> 0123456789
          # 第2页:USER_LIST[10:20]
          # 第3页:USER_LIST[20:30]
          ...
          """
           start = (pager-1) * per_page_count
           end = pager * per_page_count
           data = USER_LIST[start:end]
           for item in data:
               print(item)

    5.9.5 进制转换相关

    ··· bin() 将十进制转换为二进制

    a=23
    b=bin(a)
    print(b)

    ··· oct() 将十进制转换为八进制

    a=23
    b=oct(a)
    print(b)

    ··· int() 将其他进制转换为十进制

    # 二进制转化成十进制
    v1 = '0b1101'
    result = int(v1,base=2)
    print(result)

    # 八进制转化成十进制
    v1 = '0o1101'
    result = int(v1,base=8)
    print(result)

    # 十六进制转化成十进制
    v1 = '0x1101'
    result = int(v1,base=16)
    print(result)

    ··· hex() 将十进制转换为十六进制

    a=23
    b=hex(a)
    print(b)
    # 1字节等于8位
    # IP: 192.168.12.79 -> 001010010 . 001010010 . 001010010 . 001010010

    # 1. 请将 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))


    # 2. 请将 ip = "192.168.12.79" 中的每个十进制数转换成二进制:
    #         0010100100001010010001010010001010010 -> 十进制的值。

    info='192.168.12.79'
    fina='0b'
    # 通过'.'分割
    info_split=info.split('.')
    # 通过遍历列表得到列表中每一个元素
    for i in info_split:
       # 将字符串转为整形再转为二进制,
       bin_num=bin(int(i))
       # 将二进制去除0b
       str_num=bin_num[2:]
       # 凑齐八位
       if len(str_num) < 8:
           str_num=(8-len(str_num))*'0'+str_num
       # 链接所有的字符串
       fina+=str_num
    print(int(fina,base=2))

    # 3232238671

     

  • 相关阅读:
    python 序列排序 排序后返回相应的索引
    海明距离
    hive学习01词频统计
    自然语言处理之LCS最长公共子子序列
    自然语言处理之关键词提取TF-IDF
    自然语言处理之比较两个句子的相似度 余弦相似度
    linux命令tar压缩解压
    linux学习之软件包安装
    集群间数据迁移报错
    hive学习04-员工部门表综合案例
  • 原文地址:https://www.cnblogs.com/usherwang/p/12833497.html
Copyright © 2011-2022 走看看