集智专栏
资源加载中,请稍后...
集智专栏

[2018.02.25直播] Python之函数

Kaiser

往期回顾:

第1集:

视频:负基础入门Python(1)

文章:[2018.02.10直播] Python之禅

第2集:

视频:负基础入门Python(2)

文章:[2018.02.12直播] Python之循环

第3集:

视频:负基础入门Python(3)

文章:[2018.02.12直播] Python之函数



07. 循环 + 函数

Quiz 4: 最大公约数

最大公约数(Great Common Denominator):同时被两个数整除的最大正整数,如:

gcd(6, 9) = 3, gcd(18, 24) = 6

程序说明
Euclidean
示例代码
def gcd(a,b): # 保证a大b小 if b > a: a, b = b, a while a % b != 0: # 当a不整除b(余数不为0)的时候 a,b = b, a%b # b->a, a%b->b return b


08. 函数嵌套

Quiz 4.1:最小公倍数

最小公倍数:同时整除两个数的最小正整数,如:

lcm(6, 9) = 18, lcm(18 ,24) = 72

程序说明
Least Common Multiple
示例代码
# 最大公约数 def gcd(a,b): # 保证a大b小 if b > a: a, b = b, a while a % b != 0: # 当a不整除b(余数不为0)的时候 a,b = b, a%b # b->a, a%b->b return b # 最小公倍数 def lcm(a, b): return a * b // gcd(a,b)


09. 函数递归

程序说明
Euclidean
示例代码
def rgcd(a, b): # 保证a大b小 if b > a: a, b = b, a while a%b != 0: # 当a不整除b(余数不为0)的时候 return rgcd(b, a%b) # 把b和a%b作为新的输入参数再来一次,直到a整除b





简答题(写出关键词即可)

以下求最小公倍数的函数,返回值为什么要用//而不是/

def lcm(a, b):

    return a * b // gcd(a,b)


编程题(直播结束后答案已上线)

Quiz 5: 斐波那契数列

  • 定义函数fib(n),返回斐波那契数列的第n项。
  • 斐波那契数列:0,1,1,2,3,5,8,13...
程序说明
Fibonacci
示例代码
def fib(n): # >>>> coding <<<< # >>>> coding <<<<
正确答案
def fib(n): if n <= 1: return n else: return fib(n-1) + fib(n-2)
程序验证过程
def fibc(n): if n <= 1: return n else: return fibc(n-1) + fibc(n-2) import random n = random.randint(1, 10) fib(n) == fibc(n)
提示信息
嵌套函数,当n>1时,return fibc(n-1) + fibc(n-2)

您也许喜欢这些文章

集智专栏

Julia快速入门(下)

发表至系列教程
本文紧接着本站翻译的之前两篇文章,来介绍Julia语言相关的另外一些关键知识点——Types、文件IO、第三方包的使用、绘图以及DataFrames。
集智专栏

[Python Quiz] 2018.03.14 醒来发现自己在一个陌生的房间里

发表至系列教程
2018年3月14日直播配套专栏,做几道综合练习题,知识点包括:基本运算、逻辑运算、列表、字符串等。
集智专栏

Patchouli的机器学习系列教程一:概率论初步与其他基础数学知识——『器』

发表至系列教程
将第一章中所学的数学知识运用到机器学习实践中去,学以致用,文武兼备。

文章评论(10)

Kaiser集智 站长 发表于 4月前回复
回复Tao是饕餮的饕:有点没看明白了。想请教一下,为什么fib(n-1) 这串代码,程序会明白你需要的是数列中n-1位的数,而不会认为是要n-1的这个数值?
就是n-1这个数值啊
Tao是饕餮的饕 发表于 5月前回复
有点没看明白了。想请教一下,为什么fib(n-1) 这串代码,程序会明白你需要的是数列中n-1位的数,而不会认为是要n-1的这个数值?
燃香画雪 发表于 5月前回复
回复新用户245:加一句return b就出来了
K神是咋算出结果的。。。代码也看人下菜碟的么hhh
新用户154 发表于 5月前回复
回复新用户245:加一句return b就出来了
谢谢啦,恩恩解决啦
WillaNovia 发表于 5月前回复
回复新用户154:负基础 第三节课内容 第九个体,函数的递归 当我运行这段课程内的代码时,返回的是 None. 而不是4.。想问一下,这是为什么? '''' def rgcd(a, b): # 保证a大b小 if b > a: a, b = b, a while a%b != 0: # 当a不整除b(余数不为0)的时候 return rgcd(b, a%b) # 把b和a%b作为新的输入参数再来一次,直到a整除b print(rgcd(12,36)
加一句return b就出来了
新用户154 发表于 6月前回复
最后一题, 按直播中的讲解做不出来,做出来结果比实际的多了两位 def fib(n): if n==1: return 0 # print(n) if n==2: return 1 else: # print(n) return (fib(n-1)+fib(n-2)) c=fib(17) print(c)
新用户154 发表于 6月前回复
负基础 第三节课内容 第九个体,函数的递归 当我运行这段课程内的代码时,返回的是 None. 而不是4.。想问一下,这是为什么? '''' def rgcd(a, b): # 保证a大b小 if b > a: a, b = b, a while a%b != 0: # 当a不整除b(余数不为0)的时候 return rgcd(b, a%b) # 把b和a%b作为新的输入参数再来一次,直到a整除b print(rgcd(12,36)
yhs 发表于 6月前回复
简答题: 题目要整数答案,用//会得到整数,/是小数。 编程题 def fib(n): # >>>> coding <<<< if n==1|n==0 return 1 return fib(n-1)+fib(n-2) # >>>> coding <<<<
因为返回的是整数,//拿到整数,/会拿到小数。所以用//。 def fib(n): if n == 1: return(1) elif n == 2: return(2) else: return(fib(n-1)+fib(n-2))
安非他命 发表于 6月前回复
简答题://是整除,/是除,这里我们要的是整数答案,所以用//。 编程题: if n == 1: return(1) elif n == 2: return(1) else: return(fib(n-1)+fib(n-2))