04_函数模块

#交换两个变量
#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))
发布了5 篇原创文章 · 获赞 15 · 访问量 446

猜你喜欢

转载自blog.csdn.net/xiaoduanDDG/article/details/102903439
04_