零基础入门学习Python(16)-函数1,Python的乐高积木

什么是函数?

  • 函数就是把代码打包成不同形状的乐高积木,以便可以发挥想象力进行随意拼装和反复使用
  • 一个程序可以按照不同功能的实现,分割成许许多多的代码块,每一个代码块就可以封装成一个函数

在Python中创建一个函数

  • def关键字
def myfirstfunction():#一定要有小括号
	print('这是我创建的第一个函数!')
	print('我表示很激动.....')
	print('在此我要感谢小甲鱼,感谢pdd')

如何调用一个函数?

  • 直接写出函数的名字再加上小括号就ok啦
    在这里插入图片描述
    如何调用3次该函数,用for循环
    在这里插入图片描述

函数的实现原理

  • 当函数发生调用操作时,Python会自动往上找到该函数的定义过程,然后依次执行该函数所包含的代码块部分,即冒号后面的缩进部分内容,只需要一条语句,就可以轻松实现函数内的所有功能

函数的参数

  • 有了参数之后,函数就变得可变了
    在这里插入图片描述
  • 函数可以有多个参数,用“,”隔开即可,但是定义函数的参数尽量不要太多,函数功能和参数意义一定要写好心相应注释
    在这里插入图片描述

函数的返回值

  • 有时候需要函数返回一些数据来报告执行的结果,即函数需要返回值,只要在函数中使用关键字return即可,后面跟着的就是指定要返回的值
    在这里插入图片描述

Task

0. 你有听说过DRY吗?
DRY是程序员们公认的原则:Don’t Repeat Yourself

1. 都是重复一段代码,为什么我要使用函数(而不使用简单的拷贝黏贴)呢?
使用函数有以下好处:

  • 可以降低代码量(调用函数只需要一行,而拷贝黏贴需要N倍代码)
  • 可以降低维护成本(函数只需修改def部分内容,而拷贝黏贴则需要每一处出现的地方都作修改)
  • 使序更容易阅读(没有人会希望看到一个程序重复一万行“I love FishC.com”

2. 函数可以有多个参数吗?
可以,但最好不要太多,在python的世界里,精简才是王道

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

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

在这里插入图片描述
因为当 Python 执行到 return 语句的时候,Python 认为函数到此结束,需要返回了(尽管没有任何返回值)。
6.编写一个函数 power() 模拟内建函数 pow(),即 power(x, y) 为计算并返回 x 的 y 次幂的值。

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

在这里插入图片描述
7. 编写一个函数,利用欧几里得算法(脑补链接)求最大公约数,例如 gcd(x, y) 返回值为参数 x 和参数 y 的最大公约数。
我的代码

def gcd(x,y):#求x和y的最大公约数
    a = max(x,y)
    b = min(x,y)
    c = a % b
    while c:
        a = b
        b = c
        c = a % b
    return b

在这里插入图片描述
小甲鱼代码:小甲鱼没有判断xy谁大谁小

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

8.编写一个将十进制转换为二进制的函数,要求采用“除2取余”(补脑链接)的方式,结果与调用 bin() 一样返回字符串形式。
代码1:利用pop倒取

def binnn(a):#十进制转二进制
    temp = []
    result = ''
    while a:
        b = a % 2
        a = a // 2
        temp.append(b)
    while temp:
        result += str(temp.pop())#利用pop倒取
    return ("0b" + result)

在这里插入图片描述
代码2:利用reverse方法倒取

def binnn(a):#十进制转二进制
    temp = []
    while a:
        b = a % 2
        a = a // 2
        temp.append(b)
    temp.reverse()
    for i in temp:
        print(i,end = '')

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_44520665/article/details/113788210
今日推荐