可以在一个函数中定义另一个函数_第5周 定义一个函数

3a0310b7bb7c808165501978e5a1f52c.gif

亲爱的观众老爷们,早上好!

编程大师Martin Fowler先生曾经说过:“代码有很多种坏味道,重复是最坏的一种!”,要写出高质量的代码首先要解决的就是重复代码的问题。

那么有什么好的办法呢?那就是将常用的功能封装起来!今天就让我们来学习下,怎么定义一个自己的封装函数,然后没事就调用他一下>>>>>>>>!

********神奇的def函数********

在Python中可以使用def关键字来定义函数,和变量一样每个函数也有一个响亮的名字,而且命名规则跟变量的命名规则是一致的。在函数名后面的圆括号中可以放置传递给函数的参数,这一点和数学上的函数非常相似,程序中函数的参数就相当于是数学上说的函数的自变量,而函数执行完成后我们可以通过return关键字来返回一个值,这相当于数学上说的函数的因变量。

话不多说,咱们来一起分析一段代码:

def jiecheng(num): ##定义一个叫“阶乘”的函数,输入自变量是“num”    result = 1 ##初始值为1    for i in range(1, num + 1): ##定义一个循环,从1开始,每次加1,一直加到num+1为止        result = result * i ##把这个数跟result相乘,然后重新赋值给result    return result ##输出result的结果    m = int(input('m = '))#请用户输入一个数字m# 当需要计算阶乘的时候不用再写循环求阶乘而是直接调用已经定义好的函数print(jiecheng(m)) # 调用jiecheng函数,算m的阶乘数值

仔细阅读下代码的注释,相信聪明的你已经明白如何定义一个函数以及如何调用一个函数了。

********函数的参数********

【有默认值,可以变】

在Python中,函数的参数可以有默认值,也支持使用可变参数,所以Python并不需要像其他语言一样支持函数的重载,因为我们在定义一个函数的时候可以让它有多种不同的使用方式,下面是两个小例子。

##摇骰子from random import randint ##引入python自带的随机数功能def roll_dice(n=2):##定义一个摇骰子的功能,摇n个骰子,默认n=2    total = 0 ##定义初始值为0    for _ in range(n): ##骰子要一颗一颗的投出来        total = total + randint(1, 6) ##把每个骰子的结果加到result上    return total ##返回result值def add(a=0, b=0, c=0):##定义一个加法函数,默认三个参数都等于0    return a + b + c ##返回a+b+c都数值# 如果没有指定参数那么使用默认值摇两颗色子print(roll_dice()) ## 两个骰子相加print(roll_dice(3))# 摇三颗色子print(add()) ## 因为a/b/c都默认等于0,所以结果是0print(add(1))##因为a=1,b/c都默认等于0,所以结果是1print(add(1, 2))##因为a=1,b=2 c默认等于0,所以结果是3print(add(1, 2, 3))##因为a=1,b=2 c=3,所以结果是6print(add(c=50, a=100, b=200))# 传递参数时可以不按照设定的顺序进行传递,结果是350

********本周小测验********

计算求最大公约数和最小公倍数的函数

  条件1: 用户输入两个数字x,y

  条件2: x,y都是非负整数

  要求1: 输出两个数字的最大公约数

  要求2:输出两个数字的最小公倍数

【提示-最大公约数】试错法:假设计算96和256的最大公约数,可以从设计参数96往下开始每次减一,然后看看96和256,如果两个数字都能除尽,那么就是最大公约数了。

【提示-最小公倍数】用x*y/最大公约数,就是他的最小公倍数。

尝试用代码来实现它吧,答案下周公布!

********上周问题答案********

100以内的质数

import math ##导入python自带的数学库for num in range(2, 100): ##把2到100的数字都尝试一遍    is_prime = True #默认这个数是质数    for factor in range(2, int(math.sqrt(num)) + 1):##把因子设定为从2开始到根号下(目前正在测试的数)+1        if num % factor == 0: ##如果能整除,那么这个数就不是质数            is_prime = False            break ##开始算下一个数     if is_prime == True :        print(num, end=' ') ##如果测试完依然是质数,那么就输出这个结果

【学会了吗?本周撒花完结!】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值