zoukankan      html  css  js  c++  java
  • 【Finish】Python Day 15

    # # 复习
    # # 迭代器和生成器
    # 迭代器
    # 可迭代协议——含有iter方法的都是可迭代的
    # 迭代器协议——还有next和iter的都是迭代器
    #
    # 特点
    # 节省内存空间
    # 方便逐个取值,一个迭代器只能取一次
    #
    # 生成器——所有的生成器都是迭代器
    # 生成器函数
    # 含有yield关键字的函数都是生成器函数
    # 生成器函数的特点
    # 调用之后函数内的代码不执行,返回生成器
    # 每次从生成器中取一个值就会执行一段代码,遇见yield就停止
    # 如何从生成器中取值:
    # for循环:如果没有break会一直取,直到取完
    # next:每次只取一个
    # send:不能用在第一个,取下一个值得时候给上一个位置传一个新的值
    # 预激活 可以使用装饰器修饰
    # 数据类型强制转换:会一次性把所有数据都取到
    #
    # 生成器表达式
    # (条件成立,想放在生成器中的值 for i in 可迭代的 if 条件)
    #
    # # 1、处理文件,用户指定要查找的文件和内容,将文件正包含要查找内容每一行都输出到屏幕上
    # def output_file_result(file,content):
    # with open(file=file,mode='r',encoding='UTF-8') as f: # 句柄handler,文件操作符,文件句柄
    # for line in f:
    # if content in line:
    # yield line.strip()
    # ret = output_file_result('file','python')
    # for i in ret:
    # print(i)
    #
    # # 2、写生成器,从文件中读取内容,在每一次读取到的内容之前加上'***'之后再返给用户
    # def output_file_result_g():
    # with open(file='file',mode='r',encoding='UTF-8') as f:
    # for line in f:
    # yield '***'+line.strip()
    # ret = output_file_result_g()
    # for i in ret:
    # print(i)

    # def generator():
    # for i in range(3):
    # yield i
    # g = generator()
    # g1 = (i for i in g)
    # g2 = (i for i in g1)
    # print(list(g1))# [0, 1, 2]
    # print(list(g2))# []


    # def add(n,i):
    # return n+i
    #
    # def test():
    # for i in range(4):
    # yield i
    #
    # g = test()
    # for n in [1,10,5]:
    # g = (add(n,i) for i in g)
    #
    # # 解析步骤如下所示:
    # 1
    # g = (add(n,i) for i in g)
    # 10
    # g = (add(n,i) for i in g)
    # 5
    # g = (add(n=5,i(10,11,12,13)) for i in (add(n=5,i(5,6,7,8)) for i in (add(n=5,i(0,1,2,3)) for i in g)))
    #
    # print(list(g)) # list(g)才是执行状态



    # 内置函数
    # print(locals())#返回本地作用域中的所有名字
    # print(globals())#返回全局作用域中的所有名字
    # global 变量
    # nonlocal 变量

    # 迭代器.__next__()
    # next(迭代器)
    # def next(迭代器):
    # 迭代器.__next__()
    # [].__len__() = len([])

    # 迭代器 = iter(可迭代的)
    # 迭代器 = 可迭代的.__iter__()

    # range(1,11)
    # range(1,11,2)

    # dir 查看一个变量拥有的方法
    # print(dir([]))

    # print(callable(print)) # True 确认是否是函数名,是否可以被调用
    # print(callable(globals))# True

    # print(help(str)) # 输出可调用方法名以及其用法

    # import time
    # time = __import__('time')
    # print(time.time())


    # 某个方法属于某个数据类型的变量,据用.调用
    # 如果某个方法不依赖任何数据类型,就直接调用——内置函数和自定义函数

    # f = open('log') # open是内置函数
    # print(f.writable()) # 检测是否可写
    # print(f.readable()) # 检测是否可读


    # id
    # print(hash(123)) # 123
    # print(hash('12242'))# 8424298810427281872

    # print(hash((1,2,)))# 3713081631934410656
    # print(hash((1,2,)))# 3713081631934410656

    # print(hash([])) # TypeError: unhashable type: 'list'

    # 对于相同可以hash的数据的hash值在一次的执行过程中总是不变的
    # 字典寻址,通过hash值


    # ret = input('提示:')
    # print(ret)

    # print('啊哈哈哈',end='')# 指定输出结束符
    # print('啊哈哈哈',end='')
    # 啊哈哈哈啊哈哈哈
    # print(1,2,3,4,5,sep='|') # 1|2|3|4|5 指定输出多个值之间的分隔符
    # f = open('log','w') #
    # print('aaa',file=f)
    # f.close()

    # import time
    # for i in range(0,101,2):
    # time.sleep(0.3)
    # char_num = i//2 # 整除
    # per_str = ' %s%%:%s ' % (i,'*'*char_num) if i==100 else ' %s%%:%s'%(i,'*'*char_num) # 回到行首
    # print(per_str,end='',flush=True) # flush = true,直接输出,不等其它数据的缓存
    # # progress_Bar

    # exec('print(123)') #123
    # eval('print(123)') #123
    # print(exec('(1+2+3)')) # None
    # print(eval('(1+2+3)'))# 6
    # exec 和eval都可以执行字符串类型的代码,但是区别是eval有返回值,而exec无返回值
    # eval只能用在明确知道你要执行的代码是什么
    # exec 没有返回值——简单的流程控制
    # eval 有返回值——有结果的简单计算
    # code = '''for i in range(10):
    # print(i*'*')'''
    # exec(code)

    # code1 = 'for i in range(1,10):print(i)' # 编译成可执行模式
    # compile1 = compile(code1,'','exec')
    # exec(compile1) # 1 2 3 4 5 6 7 8 9 10

    # code1 = '1+2+3+4' # 编译成可执行模式
    # compile1 = compile(code1,'','eval')
    # print(eval(compile1)) # 10

    # code = 'name = input("please input your name:")'
    # compile1 = compile(code,'','single')
    # exec(compile1)
    # print(name) # 输出input输入的内容,pycharm

    # 复数——complex
    # 实数:有理数 和 无理数
    # 虚数:虚无缥缈的数 比方说负数的平方是负数
    # 复数 :5+12j 5是实数,12是虚数 == 复数

    # 浮点数(有限循环小数,无线循环小数) == 小数:无限不循环小数不属于浮点数
    # 浮点数
    # 354.123 = 3.54123*10**2f = 35.4123*10
    # f = 1.84653245783465834 # 1.8465324578346582 浮点数特别长久会出现不准的情况,因为二进制转换出问题

    # print(bin(10)) # 0b1010 10进制
    # print(oct(10)) # 0o12 8进制
    # print(hex(10)) # 0xa 16进制

    # print(abs(-5)) # 求绝对值
    # print(divmod(10,2)) #(5, 0) div除法 mod取余 == 除余方法

    # print(round(3.141592,3)) # 3.142
    # print(pow(2,3)) # 8 pow幂运算 2**3
    # print(pow(3,2,1)) # 3的2次幂取1余 0

    # print(sum([1,2,3])) # 6
    # print(sum([1,2,3],10)) # 16 累加

    # print(min([6,1,2,3,4,5])) # 1
    # print(min(6,4,2,3,-4,5)) # -4
    # print(min(-4,2,3,-3,key=abs)) # 2 求绝对值的最小值
    # print((-4,2,3,-3,key=abs)) # 2 求绝对值的最小-4大值







  • 相关阅读:
    Android开发之Sqlite的使用
    ZOJ 3607 Lazier Salesgirl
    ZOJ 3769 Diablo III
    ZOJ 2856 Happy Life
    Ural 1119 Metro
    Ural 1146 Maximum Sum
    HDU 1003 Max Sum
    HDU 1160 FatMouse's Speed
    Ural 1073 Square Country
    Ural 1260 Nudnik Photographer
  • 原文地址:https://www.cnblogs.com/wonderful0714/p/9461253.html
Copyright © 2011-2022 走看看