日志:
import logging LOG_FORMAT="%(asctime)s - %(levelname)s - %(message)s" logging.basicConfig(level=logging.DEBUG,format=LOG_FORMAT) def test(): try: a=int(input("请输入一个被除数:")) b=int(input("请输入一个除数:")) print(a/b) return except (ValueError): logging.debug("只能输入数字") except ZeroDivisionError: logging.info("除数不能为0") else: print("else...") finally: print("程序结束") test()
推导:
#列表推导 numbers=[] # for x in range(100): # if x % 3==0: # numbers.append(x) #用推导实现 要用中括号括起来 numbers=[x for x in range(100)if x % 3==0] print(numbers) #推导也可以里面嵌套一个函数 def squared(x): return x*x multiples=[squared(i) for i in range(30)if i % 3 is 0] print(multiples) #字典推导 用大括号括起来 mcase={'a':10,'b':34} mcase_frequency={v:k for k,v in mcase.items()} print(mcase_frequency) #集合推导 squared={x**2 for x in[1,1,2]} print(squared) #集合里面都是唯一的不能重复 #练习: squares=[x**2 for x in range(10)] print(squares) #把长度大于3的名字输出大写 names=['bob','tom','alice','jerry','wendy','smith'] aaa=[name.upper() for name in names if len(name)>3] print(aaa) #输出(x,y)X0-5 偶数 Y 为0-5 奇数 xx=[(x,y) for x in range(5) if x % 2==0 for y in range(5) if y % 2==1] print(xx) #矩阵每个元素相乘 m=[[1,2,3],[4,5,6],[7,8,9]] n=[[2,2,2],[3,3,3],[4,4,4]] list=[[m[i][0]*n[i][0],m[i][1]*n[i][1],m[i][2]*n[i][2]] for i in range(len(m))] print(list)
迭代器:
from collections import Iterable #迭代器有两个基本方法:__iter__()和__next__() class InterratorDemo: def __init__(self,start=0,end=0): self.start=start self.end=end def __iter__(self): return self#返回自己对象本身 def __next__(self): #得到当前的指针start,让start位移 if self.start<self.end: i=self.start#当前下标 self.start+=1#获取下一次下标 return i else: raise StopIteration() it=InterratorDemo(0,5) print(it.__next__()) print(it.__next__()) print(it.__next__()) print(it.__next__()) print(it.__next__())
生成器:
#生成器 #1.第一种实现生成器的方式,推导外面写() test=(x for x in range(10))#中括号变成小括号 就是推导变成生成器了 print(test.__next__())#得到每一个值 #2.第二种实现生成器的方式 def feibonaqie():#菲波那切数列 a=b=1 print(a) print(b) for i in range(7): yield (a+b) a,b=b,a+b f=feibonaqie() # print(f.__next__()) for i in f: print(i)