hello, 大家好,今天又来到我们 python 每日一题的第八十一题,阶乘的递归。现在这道题中 唯一的难点就是说这个阶层的概念,如果大家在高中数学中有学过的话,我们知道阶层的具体含义,我们今天先来讲一下他的数学含义。阶层,我们用感叹号,我们打开一下画板 成,我们用感叹号表示。比如我们来举个例子, 三的阶乘等于三乘二乘一等于六,那么四的阶乘 四乘三乘二乘一等于二十四。 其实它的数学定义是什么?数学定义有一个公式, n 的 阶乘,这是一个 它的一般规律, n 乘以 n 减一,你看像三的话,三乘以三减一,再乘以三减二,对吧?然后再乘以 n 减二,最后还是要乘到一的,对吧?然后无数个省略号,然后再乘一, 对吧,这就是他的一般公式。 这是我们提前补充一下这道题需要用到的数学公式。但是我们来想一个问题, 一的阶乘等于多少?这是两个特殊情况, n 的阶乘是 n 乘以 n 减一,乘以 n 减二,乘以等等等等乘以一。那么有两个特殊情况,一的阶乘是一,零的阶乘也是一,这两个只需要特殊记忆。 那么我们这道题来看一下。边写一个函数,用来实现一个值的阶乘, 但是要注意阶乘不要写的太大,否则会导致电脑卡死。比如说我们一万的阶乘,他一直会乘下去,他会比较浪费 cpu 资源,对吧?他可能会导致电脑比较卡。我们要输入三,三的阶乘,输出六,是否和我们刚刚举的这个例子,三的阶乘是六,那么我们如何定义这样的一个函数呢? 这节课我们还要引入一个概念,就是递归,递归就是函数自己调用自己,把一个大的问题,复杂问题拆成一些小的问题,直到遇到终止条件。 那么阶层我们如何用到这个思路呢?我们来看一下是不是阶层。现在就分两种情况,两种大的情况,这是第一种情况,这是第二种情况。就说当 n 等于一和零的时候,这是一个分支,他们都等于一,当 n 大于一的时候, n 的 结成是这个公式,是吧?我们已经分好了这两种情况,那么我们提前已经建好了 test 八十一点 p y 文件,那么我们来定义一下,我们定义一个 函数来处理,我们要传入参数,就是我们的 n, 对 吧? 我们如果 n 等于零, n 等于零,这里要注意,在 python 中,一个等号表示负值,两个等号才表示相等, 或者是 n 等于一,对吧?这两种情况我们要返回什么?我们都是一啊, 那我们是不是要返回 renter 一, 那么另外一种情况就是 else 对 吧? 但是大家发现没有, n 的 结成是 n 乘以 n 减一,乘以 n 减二,乘以等等等等,乘以到一,那么我们是不是需要不断地去调用自身,这就是递归的含义, 我们返回什么呢?我们返回用 n 乘以 n 减一,对吧?这个调用这个函数传入这个 n 减一,再赋到这个值上,然后不断的去执行,比如说 n 减二也传入进去,然后不断的相乘,也就是 比如说我们拿一个例子来说,就是这里的四,然后再乘以四减一,再乘以 四减二,再乘等等等等,再乘以这个最后的一,是不是这样的一个情况?返回这个现在我们写好了一个函数,那么我们 如何来输入一下呢?我们输入一个数字,比如说 number, number 等于我们要输入,对吧?请输入一个数,请输入一个数, 数字。这里有一个问题,我们 input 常用的是字母串,但是在这个部分我们要的是具体的数值,我们给他强制转化为整形,对吧? 我们要的是整数,然后我们再打印去调用我们的函数 print 调用我们的函数,传入这里的,将 number 传入到这里的 n, 我 们来运行一下,运行请出一个数字,我们按题目要求我们输入三,看看它返回是六吗? 返回的是六,没问题。我们再来给测试一下,我们刚刚自己手动算的四的接头是二十四, 二十四,那我们来看一下,是二十四没问题,对吧?嗯,在这道题中 我们要明白两个概念,一个是递归的含义,一个就是我们阶层的含义,阶层的数学含义。 地规的话,这也是一种算法思想,地规可以理解为函数自己调用自己返回一个函数,再调用自己,不断的去操作,就是可以把大问题不断拆分成小问题,直到遇到终止条件。 像这道题的终止条件就是到 n 等于零,或者是 n 等于一的时候不断拆分,拆到 n 等于一的时候,我们直接就返回这个一就好了,对吧?也是这道题的一个核心之处。今天的这道题就讲到这里,虽然这道题其实知道他的思想后去 写对应的 python 代码是比较简单的,但是这道题最重要就是它蕴涵的思想, 一个是可能大家没了解过阶层的具体含义,还有一个 d、 v 的 含义,了解好这两个知识点之后,我们这道题就会游刃而解。好的,今天这道题就到这里,明天的 拍摄每一题我们再来挑战,拜拜。
粉丝905获赞5955


编程入门一百题,我们今天来看练习题,四边写一个可以计算给定数字阶层的程序,比如说 我们输入五的数字应该是五乘以四,乘以三,乘以二,等于一百二那类似的,我们来看一下我们这个程序很简单,我们通过应铺扯给定要输入的数字,然后通过 it 来进行转化为整数,然后通过一个负循环把我们这个数字对应的一个序率来进行连续与 ready 的相乘。最后就是我们的接乘结果, 我们执行一下输入一下我们要计算的数字,比如说我们输入四,这个就是二十四,我们输入五得到一百二,我们输入六等于七百二。

拍散入门变成一百例,我们进入第二集数字的接成。数字的接成是什么意思呢?我直接给个例子,比如说六的接成,那就是从六乘以五、乘以四、乘以三、乘以二、乘以一, 就是小于六的所有长数相乘,这个结果就是六的结成,那相应的三的结成就是三乘二乘一, 这个数字 k 是不固定的,表示三是六,是一百。咱们使用拍摄怎么来实现输入任何一个数字返回这个数字的接成呢?咱们来用代码实现一下,打开排查, 我新建一个拍摄范,叫做 p 零零二蓝宝 接成。打开这个文件了以后呢,这一次我们写个函数对付盖子接成, 输入南板,然后咱们要实现这个函数,实现完了以后怎么定他呢?比如说咱们就 库存车,咱们算一下六的接成,然后三的接成,然后一百的接成。嗯,我这里用的是排插门的快捷键, ctrl d, 他就可以复制当前行。 咱们呢在前面加一个主串,接成六,等于 方便查看结果。 然后三一的这样写的意思是说咱们先把这个函数呢他的测试程序给写好,然后再来实现这个函数。怎么实现呢?可以这样进行, v shot 等于蓝板,然后我要蓝板,他大于零的时候呢,咱们 red, 他 乘以二本,长等于三本,然后慢慢减减等于一,就是每次减一,大家看到在吗?有没有问题呢?有点问题,就是慢慢乘了两次,咱们可以把它 初始画成一,然后就是当这本大于零的时候,每次乘等于难板,然后慢慢减一, 这样就实现了。比如说穿个六斤了,他就先乘以六,然后六减一,变成五,因为他带零继续乘,最后等于一的时候呢,他乘等于一, 再减一边上零了,因为他不是大于零的,所以退出这个算盘,这个结果,我们瑞称 exok, 咱们呢运行一下代码,看一下遇见弱怎么看到 六十七百二十三十六,然后一百的接成,这个数字已经相当相当大了,所以接成这个乘法是非常非常的 厉害了。这一键的程序已经稍微复杂一点了,咱们有没有可能挨步调试,查看他的预先过程呢?可以这样逆行得力,打 打一个红点,然后右键第八个,咱们看到这程序呢,就执行到这一步了,蓝本等于六,于是他等于一,咱们往下执行,绿色的是一, 我有那么大一零,因为十六,所以大一零,然后瑞德的城北南北,那么瑞德就变成六了,然后南门减一, 这个时候大家看下方能不能变成五了,咱们往下走,遇到他变成三十,然后慢慢再减一,变成四,走走,这就是拍他们的第八个功能,就你的程序稍微 来一点的话,你可以加这样的断点,然后一步一步的走,来看看你真的程序执行了什么东西。 ok, 那么等于一走最后一招,这时候等于零了,可以退出外循环返回。遇到打印, 看下这个坑手就打印了,六的阶层是七百二, ok, 以上就是本金的演示,咱们写了一个函数,然后可以多次重复的调用,而使用第八个功能,咱们可以一步一步的查看这个函数是怎么运行的,我们下次见,拜拜。

大家好,这一期呢,我来讲第二十九题,求各个阶层的和。这道题的这个内容不多啊,就是要求我们去把这个 一到二十的阶层呢都加起来啊,一到二十的阶层呢,都加起来,那么之前在我们在应该是在第五题啊,在讲第五题的时候呢,我其实已经讲过了,如何去去纠缠那个求这个阶层啊 今天,但今天呢,因为这个有点多啊其实,呃,我想用另外一种方法去实现啊,我们可以一起来这个看一下, 上一次呢,我们说了这个阶层呢,比方说啊,比如说四的阶层啊,阶层指的是从这个自然数一直乘乘到把它前面所有自然数都给他乘完,当然除了零之外啊,比方说四的阶层呢,就是四乘以三,乘以二,乘以一, 那么在这里呢,我们可以直接去调用这个拍摄自带这个方法呢啊,但是这个方法呢,我们首先需要把这个麦子这个模块呢,先给导入进来啊,先给导入进来, 然后导入进来之后呢,我们就可以去掉这个 mause 模块底下呢有一个 batteryu 函数啊, battery 函数这个函数呢就是,嗯,帮我们去返回啊,我们所提供的数的阶层啊,我们所提供的这个数的阶层, 所以呢,我们可以先准备一个变量,叫萨是零啊,说实话为零这个萨的变量呢,我们最终要保存这二十个数的阶层之和。 好,接下来呢,咱们就可以进入到腹部循环,不挨音 ranch, 你们要知道,因为要拿到从一到二十的阶层,所以就是写到一到二十一就可以了,刚好就这个 i 呢,刚好就取到一到二十,我们直接就给这个丧加什么呢? mess 模块底下的 factory 有方法啊,我们再把 i 当做参数啊,给他送进去就可以了,循环走完这个丧里面的内容就是从一这个阶层一直加到了这个二十的这个阶层啊, 我们最后再把这个上门再打印一下,我们右键让一下。哦,我们会发现这个数呢就非常大啊,非常大。 好,这个就是趴绳当中自带的这个求阶层的方法,当然大家这个这一块呢可以自己去手动去实现。呃,因为在之前讲过这个阶层啊,所以我在这里你就不用在第五题啊,我们使用这个 循环的方法啊,去实现了某个数的阶层,大家呢也可以将它分装成一个函数再去调用也是可以的。在这里呢我直接就去用了这个这个函数啊就会比较精简一些啊。我们本期视频呢就到此结束,我们下期再见。

叫做说啊,如何得到一到十的阶层的列表啊。为什么叫阶层的列表呢?我们其实在前面已经编写了一个获取阶层的一个啊结果啊, 但是我们这一次不一样,我们想要将每一个阶层的一个啊结果放置到我们对应的这个列表当中。比如说什么呢?我们这里有个列表, 列表第一个元素是一的阶层,第二是二的阶层,还有第三个呢,是三的阶层,就是六,第四个四的阶层二十四,还有就是五的阶层一百二啊。那么把它的每一个阶层全部都放到这个列表里面,一直到我们的这 个十十的阶层啊。那我们说要达到要做到这样一个做功能的话,那么我们还是定一个函数啊,比如说 fack 他 real, 那么表示阶层阶层应该阶层历史的啊。 啊阶层列表。那么这个地方我们要传入一个数字 n, 数字 n 呢是什么呢?就是说我们要想指定的阶层的一个数量 啊。接下来我们给一个 l 一用来啊, l 一一个空列表,他是用来干嘛来?用来存储我们刚才说到的这个每一个啊数字的一个列表啊。 接下来我们创建一个循环,复 i 一润从一开始,然后到多少了,到 n 加一, 这样的话,每次我们就会循环一个呃数字。比如说我们要求计算的九阶啊,把九阶放到列表当中,那么每一个一二三四五六七八九他都是一个循环。 接下来我们还要把一二三四五六七八九的每一个阶段他的一个阶层啊给计算出来。那么这个时候呢,我们在呃 内部进验的一个变量,这个时候变量加啊是什么作用呢?就是 用来做这个阶层的时候的一个数字啊。比如说我们等于一,那么创建一个接列表等于什么呢?接一 range 是从一开始,但是呢到这个 i 加一, 也就说当我们的 i 取为二的时候,那么这里呢?就是一到三啊。当 i 等于一的时候,这里取的就是一到二。 呃,问题的话,你如果方便打字的话,你就直接在公屏上面打出来吧。啊,我把这个内容讲完以后,我就给你解答。不是录播,不是录播啊。 好,那么我们这里是里面这个循环,这里面这个循环呢?拿来做什么?就是做这个 啊,阶层的一个作用啊。比如说我计算一的阶层,二的阶层,三的阶层。那么这样的话我们就呃 inner 呃, factory 等于什么?就用心等于心,心等心等 j 啊。这样的话,我们每一个循环下来就计算了一个阶层, 但是在阶层我们最后要把它放到这个呃喷 l 一这个列表当中啊。那么我们把最终的结果放进去,最后所有列表都放完以后,我们再返回 l 一这个列表。 好,那么接下来我们打印一下,我们调用这个 factory 历史的, 比如传入三的这个阶层啊,然后运行我们会看到一个幺二六,那五的话就是幺二六,二十四,一百二 啊。这个数组循环编程以前不太懂啊。呃,数组的话,这里主要是演示他什么呢啊?演示一下他的这个双重循环啊。 啊,循环欠套。其实一般情况下我们用的是单层的一个简单循环啊, 简单循环实际上就像是一维一样,而到了双层循环,他就像是二维一样的 好。当我们 选择这个按照标题说一到十的阶层啊,那么这样的话,我们看到最后生成了一个列表,列表的每一个数字是一个数字的一个阶层啊。那么一直到十的阶层 啊。其实在现在我在这里讲解啊。呃,可能看上去有点啊简单啊。但是在我那是简单,是因为我本身之前已经去 验证过了,编写了这样的代码,进行了备课。所以呢,就看上去简单一点吧。而实际上在我还没开始自己编之前,那么 也是去想了一下,动了一下脑筋的啊。 ok, 那么这个就是从一到十的一个阶层的啊,生成了一个。

欢迎来到每天学点编程第九期,今天我们来聊聊编程中最重要的概念之一,函数。 什么是函数呢?你可以把它想象成一个处理箱,它接收一些原料或者参数进行处理,然后吐出成品,也就是返回值。比如我们给函数输入一个名字, python 函数内部开始处理,把这个名字和 hello 拼接在一起,最后它返回了结果 hello path 函数最大的好处是代码复用,一旦写好,你可以在任何地方无数次地使用它。 在 playback 中,我们使用 df 关键字来定义一个函数。在函数内部,我们可以编写任意复杂的逻辑,这就是函数体。处理完成后,使用 return 关键字将结果返回给调用者。 这里 great 是 函数名, name 是 接受参数的小篮子。 当我们调用 great python 时,它就会运行刚才写好的逻辑,最后通过 print 打印出处理后的结果。 总结一下,函数让你的代码更简洁,更模块化,它是构建复杂程序的基石。每天学点编程,我们下期见。

逼自己一周学会你的 python 就 牛了,全程干货,无废话,存下吧,前两百分钟完整版,学完即就业! 警告,本视频耗时两个月制作,制作时长两百分钟,带你全方位的了解 python, 学习 python, 这应该是全抖音最良心的入门到精通的 python 教程,零基础小白也能学会。由于视频太长,本合集分为十二期发布。 最后呢,我会给大家一个小福利,课程视频中的所有素材有搭建、派送开发环境资料包,还有从零到一的学习计划表,几十上百记素材,电子书,课件等等,只要你能想到的素材我这里几乎都有, 评论留言打卡学习即可全部免费打包带走,相信我,这套 python 系统课程将会是全网最齐全最易懂的小白专用课。本期带大家学习的是 print 函数的使用, 接下来呢,我们要学习的是 python 的 一个基本函数,那我们首先看到的是它的一个输出函数,也就是 print, print 是 输出函数的意思哈,像 print, 然后括号里面写一个输出内容,这是单行的一个输出, 用于在控制台中显示指定文本的一个数据。那如果我要写多行呢,就有个扩展语法,就 print 值一值二,然后 set 等于分割符呀 and 结尾符啊,然后还有一个 print 输出函数到文件中,这就是它的一个语法的一个结构。 那么我们接下来一起来写一下它的这一个输出函数吧。打开我们这个 p y 文件夹,比如说我们这里的话,就叫做我们这一个 print 函数。 那么首先在我们这 print 函数里面呢,我们来定义一个变量,这个的话还没讲,我们等一下后面的话也会给大家讲。比如说我写个 a 等于十, b 等于二十,那么它这个的话是不是这个十是什么呢?就指的是 a 是 变量,对不对? a 是 变量,然后十的话是值,对不对?下面这个就是 b 是 变量,二十是值。 接下来我要去写它的这一个,我要去输出它,比如说我写一个 print 幺幺幺,然后再去 print 我 们的这一个 a 加 b, 它是可以去做这一个预算,做加法预算的,它可以做那个预算,做预算, 然后我们再去写一个 print print 三十, print 三三三零,然后我们来鼠标右击运行一下,那我们这里是不是可以看到 它的结果全部都运行出来了?你看 print 一 一一,然后 a 加 b, 是 不是给你做了一个预算的一个处理啊?十加二十等于三十,然后 print 三三零,是不是都给你打印出来在你的控制台了,对不对?这个就是我们单行的这一个输出内容,那如果说我想要去写多行的一个输出内容呢?那我要怎么去写呢? 同样的,那我这里的话,我去写上我们的这一个 print a b, 然后去写一个字母串,好好学习,天天向上。好好学习,天天向上。然后我们在这里的话还可以去写一个什么呢?还可以写一个,再写一个数字吧,写个一百,然后我们来鼠标运行一下, 你这里的话是不是可以看到他同,他是把每一个打都打印出来在一行了,对不对?十二十,好好随天天向上一百。那大家有没有发现什么?它中间是有一个空格的,发现没有 对不对?那这个的话也就是我们这里会讲到的这一个 step step 参数就是自定义分格符,那就是会自定义有一个默认值,就是为空格。而我们这个 and 的 话是控制结尾的一个字母,你看我们这里打印完之后呢?它下面是不是自动给你换行的呀?那如果说 我不要,我想把后换行,我给改一下,那我怎么去写呢?我们来写一下,比如说我这里写一个 print 长沙, print 湖南吧, print 湖南。然后我们这里的话去写一个 and and 会等于什么呢?等于我不要,它会自动换行,那我这里的话我去写一个这样子的一个符号, 然后我们来运行,看一下,你们是不是可以看到它这里的话就没有换行的。那我在它的这一个下面,我再去输出一个欢迎你的一个语句,然后我们来运行一下它,是不是湖南欢迎你就直接打印在异行了呀?并没有刚刚那一个换行,是不是?所以说 and 的 话,它这个就是什么意思呢?它就是 换行的一个意思,这样子我就是把两行内容合并为一行了,就湖南欢迎你。你像我们前面的这一个输入输出单行语句,我们还可以写什么?比如说我去里面写一个字母串内容,我们写字母串的时候呢, 你一定要加上,就是说这个要加引号,因为你要写字母串,像 print 输出的话,它里面可以写整型、浮点型字母串要加引号,很多数据类型都是可以去写的。那我这里的话我写一个我爱中国, 我爱中国,中国也爱我,中国也爱我。我们给他打印一下,这个就是我们去打印它的一个输出语句嘛?单行的一个输出语句,那这里我们是不是可以看到我爱中国,中国也爱我,然后中间是有一个 set 函数,就是空格符, 这个呢就是我们所讲的这一个关于 print 的 一个单行输出呀,然后多行多行内容的一行里面有多个内容的时候呢?用到的这一个分格符啊,还有他的一个结尾符。那接下来我们来讲一下他的这一个 feel, 就是 相当于你的这个 print 打印出来的函数给他在文件中显示出来。那我要怎么去写呢?像在这里的话,我们可以去写一个 print, 像打印出来的函数,我们给他放到文件中,那这里会用到一个什么函数呢?会用到一个 open, 对 不对?那我们先定义一个变量,叫做 a a, 定义了一个变量的话,它等于什么呢? open, 然后括号里面写上我们的这一个天保存到的那一个 t s t 的 文件,比如说我写个一点 t s t, 然后写一个 w, 就是 写入嘛? w 是 写入的意思,那么这一行代码它什么意思呢?它是写入文件的一个意思。那写入文件之后呢?你是不是要去输出一下它呀?你要把你的那个输出内容要写到文件里面,对不对?那比如说我在这里面我输出什么呢?我输出一个 hello h e l l l hello word, 然后 你好世界,我说出了一个这样子的内容,那么是不是要保存到我们的这个变量里面呀?就是这个文件要保存到这个变量里面,然后再去关闭我们的这一个文件,是不是? 所以我们可以把这个注是给他写一下,那这个的话他就相当于去输出内容到文件中,然后第三步就是什么意思呢?是关闭文件,关闭文件,这个是 a a 啊,我写错了, 那我们来运行一下看一下,那我们是不是可以看到左边是不是有一个一点 tst 的 这样子一个文件,我们来打开看一下它是不是输出了一个 hello world, 他 说什么 encoding 要等于 utf 杠八,是不是要配置一下它的那个设置一下它这个中文的那个参数呀?那我们可以在这里去写一下,去设置一下 incoming 等于 utf 杠八,我们再来运行看一下,在这里报错了,我们看下这个一点 tst 里面的一个内容,我们给他设置一下这个 utf 杠八。 那接下来我们运行来看一下它这一个文件里面的内容,我们是不是可以看到左边的话,它有一个一点 tst 的 一个文件,我们来打开看一下里面是不是我们刚刚输出的一个文件内容啊?就是这个 hello world 输出的一个内容到文件中文件中也有这个 hello world, 那 么它这个的话就是我们关于这一个 print, 它这一个输出函数的一个讲解,就是我们有讲的这一个单行的一个输出呀,然后一行里面写多个内容啊,它有用到一个分格符啊,还有它的一个换行啊, 包括说我们可以给它就是说不换号,我们可以在这里用一个符号给它替代一下呀?然后以及关于就是说怎么把我的这一个 print 怎么去写入文件,然后输出内容到文件中啊?然后去打开可以看到文件中这样子的一个内容, 这个的话就是关于我们整个输出函数它的一个讲解,这它的一个语法就 print 值一、值二、值三。然后 sub 就是 它的一个分格符, and 的 话是一个结尾符,然后 f 的 话就是说把你这一个内容写入到这个文件中,下期见,拜拜。