Python练习题详解之函数2(小白友好)

Python练习题详解之函数2(小白友好)

你好!欢迎来到Python练习题详解系列。为了让小白(也就是我本人)更好的理解代码,打好编程基础,我决定仔细地解说一些练习题。欢迎观看!奥利给!

在开始练习题详解前,我们来看看函数的一些相关知识点:

一、形参(parameter)和实参(argument)

函数从调用的角度来说,分为形式参数和实际参数。

形参是指函数创建和定义过程中小括号里的参数;

而实参指得是函数在被调用过程中传递进来的参数。举个例子:

Python练习题详解之函数2(小白友好)_第1张图片

二、函数文档

给函数写文档是为了让别人可以更好的理解你的函数,所以这是一个好习惯。

函数文档的作用是描述该函数的功能。(功能跟注释差不多)

在函数开头写下的字符串是不会打印出来的,但它作为函数的一部分存储起来。这个称为函数文档字符串,它的功能跟注释一样。

与注释不同的是,函数文档字符串可以通过特殊属性_ _doc_ _(注:_ _doc_ _两边分别是两条下划线)

另外,想用一个函数但不知道其用法时,会通过help()函数查看函数的文档。因此,对自己的函数也可以如法炮制:

Python练习题详解之函数2(小白友好)_第2张图片

三、关键字参数

普通的参数叫做位置参数,使用位置参数可以解决程序员在调用一个函数时候,搞乱位置参数的顺序,以至于函数无法按照预期实现的潜在问题。来看个例子:

Python练习题详解之函数2(小白友好)_第3张图片

关键字参数其实就是在传入实参时指定形参的变量名,尽管使用这种技巧要多打一些字,但随着程序规模的越来越大、参数越来越多,关键字参数起到的作用就越明显

四、默认参数

默认参数就是在定义的时候赋予了默认值的参数:

Python练习题详解之函数2(小白友好)_第4张图片

使用默认参数的话,就可以不带参数去调用函数。

所以,它们之间的区别是:关键字参数是在函数调用的时候,通过参数名指定要赋值的参数,这样做就不怕因为搞不清参数的顺序而导致函数的调用出错;而默认参数是在参数定义过程中,为形参赋初值,当函数调用的时候,不传递参数,则默认使用形参的初始值代替。

五、收集参数

收集参数就是在不确定有多少参数时使用,在大多数的时候被称作可变参数,仅需要在参数前面加上星号(*)即可:

Python练习题详解之函数2(小白友好)_第5张图片

Python就是把标志为收集参数的参数们打包成一个元组。

不过,需要注意的是:如果在收集参数的后面还需要指定其它参数,在调用函数的时候就应该使用关键字参数来指定,否则Python就都会把你的实参都列入收集参数的范畴。建议在参数中带有收集参数是,可以将其它参数设置为默认参数,这样不容易出错:

Python练习题详解之函数2(小白友好)_第6张图片

题目1

编写一个符合以下要求的函数:

a) 计算打印所有参数的和乘以基数(base=3)的结果

b) 如果参数中最后一个参数为(base=5),则设定基数为5,基数不参与求和计算。

思路:

首先我们看到“计算所有参数”,好像题目并没有说一共有多少参数,所以我们的星号(收集参数)要出场!

除了‘计算所有参数’,这道题还存在一个基数,所以说明这个函数除了‘收集参数’还存在另一个base参数。

那我们就先定义这两个参数,然后用for循环来计算‘收集参数’里面的参数之和。

然后再用一个分支,如果base参数不等于5,结果就是和*3,如果base参数等于5,结果就是和*5。

这样,我们的第一题就做出来了。

答案:

Python练习题详解之函数2(小白友好)_第7张图片

思路2:

前面知识点说过,‘建议在参数中带有收集参数是,可以将其它参数设置为默认参数,这样不容易出错’,那我们也可以在第一行先让base = 3,之后就让result *= base。而在输入需要计算的数字的时候,当base为5,他也会自动替换上面的base = 3. 这是不是比上面的方法聪明多了~

Python练习题详解之函数2(小白友好)_第8张图片

【(假设这篇文章有人看)可能有小伙伴会疑惑为什么小兔不一开始就写这个简便答案,因为这篇文章是小白友好,第一种方法还是比较容易被看懂滴!看懂第一种之后,看第二种就没那么难啦】

题目2

编写一个函数findstr(),该函数统计一个长度为2的子字符串在另一个字符串中出现的次数。例如:假定输入的字符串为"You cannot improve your past, but you can improve your future. Once the time is wasted, life is wasted.",子字符串为"im",函数执行后打印“子字母串在目标字符串中共出现3次”

思路:

看到这个题目,我想起了之前字符串那篇文章里面提到的一个 .count() 函数,这个函数可以返回 sub 在字符串里边出现的次数。

答案:

Python练习题详解之函数2(小白友好)_第9张图片

先定义一个findstr() 的函数,然后在这里面先定义两个input,一个是str1,我们的目标字符串,一个是comp,我们的子字符串。然后在第九行,我们让str1调用这个count方法,括号里是comp,代表寻找comp字符串在str1字符串中出现的字数。

就可以啦!

如果不要input呢?那像下面这样也可以哒~

 

你可能感兴趣的:(python)