《零基础入门学习python》学习过程(五)

学习时间:2017/10/17

第18、19、20、21、22、23课:函数

18课知识点汇总:
创建和调用函数:

>>> def Function_name(parameters):   #函数创建
        function body

>>> Function_name(parameters)    #函数调用

18课课后题汇总:
1. 什么是DRY?DRY是程序员们公认的指导原则:Don’t Repeat Yourself. 不要再去重复拷贝一段代码了。使用函数的好处:降低代码量、降低维护成本、易读。

2.以下函数有几个参数?

>>> def MyFun((x,y),(a,b)):
        return (x*y-a*b)

答案为0个,因为类似于这样的写法是错误的。函数的参数需要的是变量,而这里试图用“元祖”的形式来传递是不可行的。
如果要表达传递元组可用以下方式:

>>> def MyFun(x,y):
    return (x[0]*x[1]-y[0]*y[1])

>>> MyFun((3,4),(1,2))
10

3.请问调用以下这个函数会打印什么内容?

>>> def hello():
        print('Hello World!')
        return
        print('Welcome To FishC.com!')

会打印

>>> hello()
Hello World!

因为当Python执行到return语句的时候,Python认为函数到此结束,需要返回了(尽管没有任何返回值)。

4.编写一个将十进制转换为二进制的函数,要求采用“除2取余”[概念链接]的方式,结果与调用bin()一样返回字符串形式。

>>> def Dec2Bin(dec):
    temp=[]
    result=''
    while dec:
        quo=dec%2
        dec=dec//2
        temp.append(quo)
    while temp:
        result+=str(temp.pop())
    return result

>>> print(Dec2Bin(62))
111110

5.编写一个函数,利用欧几里得算法[概念链接]求最大公约数,例如gcd(x, y)返回值为参数x和参数y的最大公约数。
欧几里得算法:两个数的最大公约数是指能同时整除它们的最大正整数。
设两数为ab(a≥b),求ab最大公约数(a,b)的步骤如下:
(1)用a除以b(a≥b),得a÷b=q...r1(r1≥0)
(2)若 r1=0 ,则 (a,b)=b
(3)若 r1≠0 ,则再用b除以r1 ,得b÷r1=q...r2(r2≥0) .
(4)若 r2=0 ,则 (a,b)=r1 ;若r2≠0,则继续用 r1 除以 r2 ,……,如此下去,直到能整除为止。
其最后一个余数为0的除数即为 (a,b)的最大公约数。

>>> def gcd(x,y):
    while y:
        remainder = x % y
        x = y
        y = remainder 
    return x
#本应返回的是除数,但是由于每一次while循环中已经将y赋给x,故返回x

>>> print(gcd(4,6))
2
>>> print(gcd(6,4))
2

易错处:在这里,不用判断两个参数的大小,因为小数除以大数比大数除以小数就多一次while循环,这次while循环中只是将两个数字位置调换,并无其他影响。

19课知识点汇总:
1.形参和实参

>>> def MyFirstFunction(name):
        '函数定义过程中的name叫形参'
        #因为它知识一个形式,表示占据一个参数位置
        print('传递进来的'+name+'叫做实参,因为它是具体的参数值')

>>> MyFirstFunction('小甲鱼')
传递进来的小甲鱼叫做实参,因为它是具体的参数值

2.函数文档
以上1中程序中‘函数定义过程中的name叫形参’这个用单引号括起来的内容叫做函数文档,用来解释整个函数的内容梗概,可用function_name.__doc__查看该函数文档(或用help()查看)。它与注释功能相同,但严格来讲,注释只是解释说明部分代码的信息。

>>> MyFirstFunction.__doc__
'函数定义过程中的name叫形参'

>>> help(MyFirstFunction)
Help on function MyFirstFunction in module __main__:

MyFirstFunction(name)
    函数定义过程中的name叫形参

3.关键词参数
函数有多个参数时,用位置索引参数时可能会发生参数顺序引起的BUG,而用关键字索引参数就可以指定具体调用的是哪个参数,不用按照形参顺序去传递实参。例如:

>>> def SaySome(name,words):
    print(name+'->'+words)


>>> SaySome('小甲鱼','让编程改变世界')
小甲鱼->让编程改变世界
>>> SaySome(words='让编程改变世界',name='小甲鱼')
小甲鱼->让编程改变世界

4.默认参数
默认参数是为形参定义了默认值,当函数调用时未传递实参也不会报错,默认使用形参的初始值代替。

>>> def SaySome(name='小甲鱼',
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值