【小甲鱼Python】函数:Python的乐高积木&&课后作业

笔记

复杂问题简单化的三种实现方式

函数,对象,模块

函数

1.函数的创建和调用:

创建:

def 函数名(形参列表):

      代码块

调用:

函数名(实参列表)

 

 2.函数的调用机制

当函数发生调用的时候,Python会向上寻找“def ”这个关键字,接着依次执行函数体(代码块)。

3.函数的返回值

用return关键字实现

例如:

 


课后作业

0. 你有听说过DRY吗?
答:DRY 全称:Don't Repeat Yourself (摘自wikipedia),是指编程过程中不写重复代码,将能够公共的部分抽象出来,封装成工具类或者用“abstraction”类来抽象公有的东西,降低代码的耦合性,这样不仅提高代码的灵活性、健壮性以及可读性,也方便后期的维护或者修改。

1. 都是重复一段代码,为什么我要使用函数(而不使用简单的拷贝黏贴)呢?  
答:函数可以通过不断调用而重复实现某段代码,可以在任意处调用,十分方便;而且函数可以通过改变参数来实现不同的功能,或是输出不同的结果,这就使得代码的通用性更加广泛而达到简洁方便的目的,其他原因可参见上述的DRY原则。

2. 函数可以有多个参数吗?
答:可以。

3. 创建函数使用什么关键字,要注意什么?
答:创建函数使用def关键字;

      格式为: def 函数名(形参列表):

                            代码块

4. 请问这个函数有多少个参数?
 

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


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

>>> def hello():

        print('Hello World!')

        return

        print('Welcome To FishC.com!')

答:

>>> hello()
Hello World!


动动手:

0. 编写一个函数 power() 模拟内建函数 pow(),即 power(x, y) 为计算并返回 x 的 y 次幂的值。
答:

def power(x,y):
    return x**y


1. 编写一个函数,利用欧几里得算法求最大公约数,例如 gcd(x, y) 返回值为参数 x 和参数 y 的最大公约数。
答:

def EA(x,y):
    x,y = max(x,y),min(x,y)
    remainder = 1
    while remainder != 0:
        remainder = x%y
        x,y = y,remainder
    return x

改:事实上没有必要判断x,y的大小关系,因为一个较小数除以一个较大数,所得余数必然是较大数(商为零)。直接用如下代码即可:

def gcd(x, y):
    while y:
        t = x % y
        x = y
        y = t
 
    return x
    
print(gcd(4, 6))


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

答:

def TentoTwo(x):
    quotient = 1
    temp = []
    string = ''
    while quotient != 0:
        quotient = x//2
        temp.insert(0,x%2)
        if quotient != 0:
            x,quotient = quotient,x
    for each in temp:
        string += str(each)
    return string

改:

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))

注:[]也会被识别为False,当temp为空列表时停止循环

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值