python15
‘ #compile,编译的使用 流程 code1='for i in range(10):print(i)' compile1=compile(code1,'','exec')#编译 #使用exec执行流程 exec(compile1) ''' 计算 获取简单结果 ''' code2='1+2+3+4' compile2=compile(code2,'','eval') print(eval(compile2)) ''' 交互编译,pycharm报错,不影响执行 ''' code3='name=input("please input your name")' compile3=compile(code3,'','single') exec(compile3) #执行时显示交互命令 print(name) ''' 复数complex 实数:有理数和无理数 虚数:虚无缥缈的数 12j +5 虚数加实数=复数 #浮点数包括( 无线循环小数,有限循环小数)!=小数。 小数:有限循环小数,无限循环小数,无限不循环小数 对10进制转换、 bin(10) 转二级制 oct(10)转八进制 hex(10)转十六进制 0b代表二进制 0o代表八进制 0x代表十六进制 0b1010格式后面的才是数值 abs()绝对值 divmod()接受两个参数 ''' #0.01乘10的三次方 #print(0.01*10**3) #div除法 mod取余 #print(divmod(7,2)) #小数的四舍五入 #round(3.145,2) #pow进行幂运算 #print(pow(2,3,3))#2的三次方取余 #求和,内部数据必须是可迭代的 ret=sum([1,2,34,5]) print(ret) res=sum(range(10)) print(res) ret=sum([1,2,3,4],11) print(ret) #取绝对值之后再取最小值 t = min(1, 2, 3, -4,key=abs) print(t) #取绝对值之后再取最小值 t = max(1, 2, 3, -4,key=abs) print(t) #3>2==2等价3>2 and 2==2 print(3>2==2) print(3>2 and 2==2) t=4+5j print(t) print(t.real) print(type(t.imag))#浮点数 #可迭代的才能切片 #方法一,把所有的数放到内存里再取,占用内容较大 # t=range(100) # t=list(t) # print(t[0:3]) #方法二,只在迭代器中生成三个,然后转成列表取出 t=range(100) print(list(t[0:3])) #把t复制给t1 t=range(100) t1=list(t[:]) print(t1) copy()也可以复制
#3,处理文件,用户指定要查找的文件和内容,将文件中包含要查找的内容的每一行都输出到屏幕 def check_file(filename,aim): with open(filename,encoding='utf-8') as f: for i in f: if aim in i: print(i.strip()) check_file('te.txt','今')
#使用生成器实现 def check_file(filename,aim): with open(filename,encoding='utf-8') as f: for i in f: if aim in i: yield i g=check_file('te.txt','今') for i in g: print(i.strip())
#4,写生成器,从文件中读取内容,在每一次读取到的内容之前加上'***'之后返给用户 def check_file(filename): with open(filename,encoding='utf-8') as f: for i in f: yield '***'+i for i in check_file('te.txt'): print(i.strip())
#生成器每调用一次生成一条数据 def demo(): for i in range(4): yield i g=demo() g1=(i for i in g)#i从g中取值,g从生成器中取值 g2=(i for i in g1)#g1中的值已经给了数组所以取不到 print(list(g1))#数组从g1中取值, print(list(g2))
#计算执行结果 def add(n,i): return n+i def test(): for i in range(4): yield i g=test() n=1 g=(add(n,i) for i in g) n=10 g=(add(n,i) for i in g) n=5 g=(add(n,i) for i in g) print(list(g)) ''' 分析思路 从上向下执行,所以n=5
先对变量进行引入,最后引入值 由于使用了生成器,每次计算一个值 调用函数,采取回溯法,逐层引入。计算最终结果 '''
#判断range()是不是可迭代的,可迭代的返回true
dir查看一个对象的所有方法
callable()判断是不是函数
print('__next__' in dir(range(1,22)))
help(str)查看函数的所有用法
id()变量内存地址
print('我们的祖国是华语\n',end='1')#print每次打印自动换行,end分隔符
f=open('te.txt','w+')
print('aaa',file=f),#命令行也是一个文件,只是一个被监听的文件,默认输出到文件
f.close()
#\r #不换行,会到行首 #打印进度条,如果i=100,进行换行操作,执行前面的否则回到行初 import time for i in range(0,101,2): time.sleep(0.1) char_num=i//2 per_str='\r%s%% : %s\n' % (i, '*'* char_num) if i == 100 else '\r%s%% : %s' % (i,'*'* char_num)#三元运算符
#flush=true不做缓存直接输出
print(per_str,end='',flush=True) print(123,end='') #专业的参考用progress Bar
#只能用在明确知道执行的代码, #如果有用户输入更不安全 #eval适合处理有结果的, #exec,适合处理流程 t='print(123)' exec(t)#能获得内容输出的值 eval(t)#能获得内容的值 print(exec(t)) print(eval(t)) print(eval('1+2+3+4')) print(exec('1+2+3+4')) code = '''for i in range(10): print(i*'*') ''' exec(code)