#交换两个变量 #a,b=b,a #逆序输出字符串 a=[1,2,3,4,5] b='abcde' print(a[::-1]) print(b[::-1]) print(list(reversed(a))) print(list(reversed(b))) #字符串格式化 name='Tim' sex='male' print('hello %s,your sex is %s!'%(name,sex)) #过多的if...elif...elif...else应使用字典来实现 value={'name':'Tim','sex':'male'} print('hello %(name)s,your sex is %(sex)s!'%value) #自建模块 #不带参数的函数 def hello(): "this is a function without parameter." print("hello python") hello() #带参数的函数 def print_wel(name): "this is a function with a parameter" print("welcome",name) print_wel("python") def rectangle_area(wide,height): "this is a function with two parameters" return wide*height w=2 h=3 print("width=",w,"height=",h,"area=",rectangle_area(w,h)) #函数调用 #定义函数 def printme(str): print(str) return printme("调用自定义函数") printme("再次调用自定义函数") #函数的嵌套定义 def fun1(): x=5 def fun2(): print(x) fun2() fun1() #按引用传递参数 def printme(mylist): mylist.append([1,2,3]) print("函数内的值:",mylist) return mylist=[5,15,25] printme(mylist) print("函数外的值:",mylist) #必需参数 def printme(str): print(str) return printme("apple") #关键字参数 def printme(str): print(str) return printme(str='helloword') def printme(name,sex): print('名字:',name) print('性别',sex) return printme(sex='female',name='Mary') #使用默认参数 def printme(name,age=35): print('名字:',name) print('年龄:',age) return printme(age=50,name="Mary") printme(name='Mary') #不定长参数 def printme(arg1,*variable): print(arg1) for var in variable: print(var) return printme(1) printme(4,3,2) #return语句 def sum(arg1,arg2): total=arg1+arg2 return total total=sum(110,20) print(total) #全局变量与局部变量 total=0 def sum(arg1,arg2): total=arg1+arg2 print("函数内是局部变量:",total) return total sum(2,5) print("函数外是全局变量:",total) #局部变量和全局变量 #全局变量标识 a=20#全局变量 def Add(): global a#全局变量标识 a=a+1 print(a) Add() print(a) #函数与递归 #阶乘 def Fac(num): if num<=1:return 1 return num*Fac(num-1) print(Fac(5)) #整数因子分解 #count=0 #def fac(num): # global count # n=num+1 # A=[] # for i in range(2,n): # if num%i==0: # A.append(i) # l=len(A) # for i in range(0,1): # if int(num/A[i])==1: # count+=1 # else: # fac(int(num/A[i])) # return count #if __name__=="__name__": # print(fac(35)) #快速排序 def quicksort(array): '''快速排序法''' less=[] more=[] if len(array)<=1: return array p=array.pop() for x in array: if x>p: more.append(x) else: less.append(x) return quicksort(less)+[p]+quicksort(more) array1=[21,25,32,34,42,53,54,57,78,89] print(quicksort(array1)) #归并排序 #def mergeSort(list1): # if len(list)<=1: # return list1 # mid=int(len(list1)/2) # left=mergeSort(list1[0:mid]) # right=mergeSort(list1[mid:len(list)]) # return merge(left,right) #def merge(l,r): # c=[] # i,j=0,0 # while j<len(1) and i<len(r): # if l[j]>=r[i]: # c.append(r[i]) # i=i+1 # else: # c.append(l[j]) ## j=j+1 # for i in (l[j:]) if i==len(r) else r[i:]: # c.append(i) # return c #if __name__=='__main__': # list2=[-4,0,82,3,56,19,-12,1] #print(mergeSort(list2)) #迭代器与生成器 list=['12','23','34','45'] it=iter(list)#创建迭代器对象 print(next(it))#输出迭代器的下一个元素 print(next(it)) print(next(it)) print(next(it)) string='hello' st=iter(string)#创建迭代器对象 print(next(st)) print(next(st)) print(next(st)) print(next(st)) print(next(st)) tup1=('Google','Run',1997,2017) tu=iter(tup1)#创建迭代器对象 print(next(tu)) print(next(tu)) print(next(tu)) print(next(tu)) #for循环遍历迭代器 list=['12','23','34','45'] it=iter(list) for x in it: print(x,end=" ") string="hello" st=iter(string)#创建迭代器对象 for x in tu: print(x,end=" ") string="hello" st=iter(string) for x in st: print(x,end=" ") tup1=('Google','Run',2017,2018) tu=iter(tup1) for x in tu: print(x,end=" ") #while循环遍历迭代器 string='hello' st=iter(string) i=0 while (i<5): print(next(st),end=" ") i+=1 #生成器 def fib(n): a,b,counter=0,1,0 while True: if (counter>n): return yield a a,b=b,a+b counter+=1 f=fib(15) i=0 while i<15: print(next(f),end=" ") i+=1 #自定义模块 def Add(arg1,arg2): total=arg1+arg2 return total def Sub(arg1,arg2): diff=arg1-arg2 return diff def printme(str): print(str) return print() #format()函数的使用 #简单的格式化输出 print('{}:"{}!"'.format('hello','python')) print() #带有对象传入顺序的格式化输出 print('{0}和{1}'.format('Google','Apple')) print('{1}和{0}'.format('Google','Apple')) #使用关键字参数 print('{name}网址:{site}'.format(name='百度',site='www.baidu.com')) #同时使用对象传入顺序和关键字参数的格式化输出 print('网站{0},{1},和{other}。'.format('baidu','meituan',other='taobao')) #格式标识符的格式输出 import math print('PI的近似值是{0:.2f}。'.format(math.pi)) #表格式格式化输出 tables={'baidu':1,'meituan':2,'taobao':3} for name,number in tables.items(): print('{0:8}------>{1:8d}'.format(name,number)) #使用%操作符的格式化输出 import math print('常量PI的值近似是:%4.2f。'%math.pi) #repr()函数的使用----将表达式原封不动输出来,形参替换为实参 print(repr('hello,python')) print(repr(0.1)) x=13*3.25 y=20*34 s='x is'+repr(x)+'||||y is'+repr(y) print(s) print(repr('hello,Python\n')) print(repr((x,y,('word','world')))) print(repr('hello')) obj='hello,python.' print(obj==eval(repr(obj))) #内建模块 #时间模块 import time#引入time模块 ticks=time.time() print('当前的时间戳为:',ticks) #日历模块 import calendar cal=calendar.month(2017,3) print('以下输出2017年3月份的日历:') print(cal) #lambda函数的使用 sum=lambda arg1,arg2:arg1+arg2 sub=lambda arg1,arg2:arg1-arg2 #调用sum函数 print('相加的值:',sum(10,22)) print('相减的值:',sub(20,5)) #lambda函数的使用----立方与乘幂: square=lambda x:x**3 print(square(3)) power=lambda x,y:x**y print(power(2,10)) #lamdba函数的使用----按照姓氏排序: name=["Kitty Smit","Wart Kay","Jack Backus",'JimGold'] name.sort(key=lambda name:name.split()[-1]) print(",".join(name))