03python_function

来源:互联网 发布:打印机合格证的软件 编辑:程序博客网 时间:2024/04/30 05:08

Python学习笔记

03python_function

  • defFunction
#-*- coding:utf-8 -*-print("defFunction")def my_function(x):    if x>=0:        return x    else:        return -xx = input("please input the value of x:")print(my_function(int(x)))#pass用于返回没有用的空函或者方法def my_fun01(y):    pass#my_function(1,2)参数检查def my_fun02(x):    if not isinstance(x,(int,float)):        raise TypeError("bad operand type")    if x!=100:        print("not 100")    else:        print("hundred")print(my_fun02("hehe"))
  • defFunctionPlus.py
#-*- coding:utf-8 -*-print("defFunction")def my_function(x):    if x>=0:        return x    else:        return -xx = input("please input the value of x:")print(my_function(int(x)))#pass用于返回没有用的空函或者方法def my_fun01(y):    pass#my_function(1,2)参数检查def my_fun02(x):    if not isinstance(x,(int,float)):        raise TypeError("bad operand type")    if x!=100:        print("not 100")    else:        print("hundred")print(my_fun02("hehe"))
  • function_abs_max
#-*- coding:utf-8 -*-print("abs求绝对值")print(abs(100))print(abs(-200))print(abs(12.43))print(max(1,2,3,5,-100))print(float("123.200"))print(int("12"))print(int(12.45))print(str(100))print(bool(1))print(bool(""))print("函数的别名")a = absprint(a(-123))n1 = 123141341print(hex(n1))print(n1,'\n',n1)#/n好像是用于这个换行空格  所以多出一个空格
  • function_para
# -*- coding:utf-8 -*-def power(x):    return x*x#这些都是必选参数print(power(25))#必选参数在前,默认参数在后才行def power(x,n=2):    i = 1    for t in range(n):#rang是指从0-(n-1) 只是数这N个数而已        i = i * x    return iprint(power(5,3))print(power(25))print("*********************************")def reroll(name,grade,age=6,city="xian"):    print("name:",name)    print("grade:",grade)    print("age:",age)    print("city:",city)reroll("xiaoming",14)reroll("xiaohong",99,8)reroll("yangcongtou",100,9,"beijing")reroll("lanmao",13,city="shanghai")print("*****************坑*******************")#默认参数最大的坑   准备好铲子了吗哈哈def add_end(L=[]):    L.append("END")    print(L)add_end([1,2,3])#[1,2,3,end]add_end()#[end]add_end()#[end,end]add_end()#..print("*******************调整*******************")#在函数声明的时候,L=[]就已经被声明出来了,所以它变成了一个可变的list供给使用,每次再重新调用的时候就会出现这种现象,所以必须放不可变对象def add_end_change(L = None):    if L == None:        L = []    L.append("END")    print(L)add_end_change([1,2,3])#[1,2,3,end]add_end_change()#[end]add_end_change()#[end]add_end_change()#..#由于对象不变,多任务环境下同时读取对象不需要加锁,同时读一点问题都没有。我们在编写程序时,如果可以设计一个不变对象,那就尽量设计成不变对象。print("*******************可变参数********************")#实现一个累加程序,但是参数数量不确定def add_add(numbers):    sum = 0    for i in numbers:        sum = sum+i    print(sum)    return sumadd_add([1,23,4,5,78])#麻烦  每次都要输入这么长的数字def add_add(*numbers):    sum = 0    for i in numbers:        sum = sum+i    print(sum)    return sumadd_add(1,2,3,4,567,1)#在函数内部,参数numbers接收到的是一个tupleadd_add()Lisa = [1,2,3,4,5,123,6,7]hels = (1,2,4,45,4,7,88,9)add_add(Lisa[0],Lisa[1],Lisa[2],Lisa[3],Lisa[4],Lisa[5],Lisa[6],Lisa[7])add_add(*Lisa)add_add(*hels)#nice#很有用print("********************关键字参数*********************")#关键字参数主要是用于传递dict的,这样有键值对的值用**来传递def person(name,age,**kv):    print({"name":name,"age":age,"other":kv})person("Aono",12)person("Aono",12,city="xian")person("Aono",12,city="xian",grade=100)extr = {"city":"beijing","grade":123}person("Aono",12,**extr)person("Aono",12)
  • function_para_other
# -*- coding:utf-8 -*-print("************************命名关键字参数*************************")def person(name,age,**kw):    if "city" in kw:        print("jao")        print("has_city")        pass#有city参数    if "grade" in kw:        print("hao")        print("has_grade")        pass#有grade参数    print("name:",name,"age:",age,"other:",kw)person("Aono",24,addr="dianzizhengjie",zipcode=123456)person("Aono",24,addr="dianzizhengjie",zipcode=123456,city="xian")print("限制关键字参数为city和grade")def person(name,age,*,city,grade):#*是特殊分隔符  用来区分位置参数和关键字参数的    print(name,age,city,grade)#命名关键字参数必须传入参数名,这和位置参数不同。如果没有传入参数名,调用将报错:person("Aono",24,city="xian",grade=100)#事实证明不都写上而且写对是有问题的#person("Aono",24,"xian")#命名关键字可以有默认值,这样就会避免没有写出现的问题def person(name,age,*,city="xian",grade):    print(name,age,city,grade)person("Aono",24,city="xian",grade=100)person("Aono",24,grade=100)print("*************************参数组合****************************")print("*************************必选参数、默认参数、可变参数、关键字参数和命名关键字参数****************************")print("*************************顺序:必选参数、默认参数、可变参数/命名关键字参数和关键字参数****************************")def fun01(a,b,c = 0,*d,**e):    print("a:",a,"b:",b,"c:",c,"d:",d,"e:",e)fun01(1,2,[23,45],k="123",f = 12)r = {"name":"Aono","age":23,"city":"xian","grade":122,"school":"jiliUniversity"}def fun02(*d,**e):    print("d:",d,"e:",e)fun02(**r)
  • function_recursive
# -*- coding:utf-8 -*-print("*********************递归函数*********************")def fact(n):    if n == 1:        return 1    else:        return n*fact(n-1)print(fact(5))print(fact(100))#print(fact(1000))这样会栈溢出的  要注意print("*********************尾递归(类似于循环while)*********************")def fact_head(n):    return fact_tail(n,1)def fact_tail(num,product):    if num == 1:        return product    else:        return fact_tail(num-1,num*product)print(fact_head(5))print(fact_head(100))#然而语言本身并没有对尾递归做了什么优化,所以还是会出现栈溢出的print("汉诺塔")print("设柱子A、B、C,有四个盘子,我们要想的是,第四个盘子从A-C就必须经历前三个盘子从A-B的经历,第三个盘子从A-B就必须经历前两个盘子从A-C,第二个盘子要经历从A-C就必须经历第一个盘子从A-B")def hanuo(n,a,b,c):    #不得不说自己脑子够笨的,简单的问题复杂化    if n == 0:        return None    elif n == 1:        print(a,"->",c)    else:        #print("把",n-1,"个从本地送到一个孤单的地方")        hanuo(n-1,a,c,b)        #print("本座",n,"移驾c")        hanuo(1,a,b,c)        #print("孩子们都过来",n-1)        hanuo(n-1,b,a,c)hanuo(9,"A","B","C")
  • thinking.txt
假设有四个:3要做底:遍历前2    2要做底:遍历前1        1要做底:无需遍历        1移动判断另外两个位置有没有大于本身的数,如果有,移动到较小的,没有,移动到100    2移动判断另外两个位置有没有大于本身的数,如果有,移动到较小的,没有,移动到100        1要做底:无需遍历        1移动判断另外两个位置有没有大于本身的数,如果有,移动到较小的,没有,移动到1003移动判断另外两个位置有没有大于本身的数,如果有,移动到较小的,没有,移动到100    2要做底:遍历前1        1要做底:无需遍历        1移动判断另外两个位置有没有大于本身的数,如果有,移动到较小的,没有,移动到100    2移动判断另外两个位置有没有大于本身的数,如果有,移动到较小的,没有,移动到100        1要做底:无需遍历        1移动判断另外两个位置有没有大于本身的数,如果有,移动到较小的,没有,移动到100上边的去死!!!
0 0
原创粉丝点击