前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >小甲鱼《零基础学习Python》课后笔记(十八):函数——灵活即强大

小甲鱼《零基础学习Python》课后笔记(十八):函数——灵活即强大

作者头像
小火柴棒
发布2019-01-11 15:18:31
5050
发布2019-01-11 15:18:31
举报
文章被收录于专栏:石开之旅石开之旅

测试题

0.请问以下哪个是形参哪个是实参?

代码语言:javascript
复制
def?MyFun(x):??
????return?x**3??
??
y?=?3??
print(MyFun(y))??

x 是形参,y 是实参。函数定义过程中参数是形参,调用函数过程中的参数是实参。

1.函数文档和直接用“#”为函数写注释有什么不同?

函数文档是为了让其他人能更好的理解使用你的函数。

代码语言:javascript
复制
>>>?def?MyFunction():??
????"这是一个函数文档,放在函数定义的最开头部分\n第二行"??
????print('I?Love?You!')??
??
??????
>>>?help(MyFunction)??
Help?on?function?MyFunction?in?module?__main__:??
??
MyFunction()??
????这是一个函数文档,放在函数定义的最开头部分??
????第二行??
??
>>>?MyFunction.__doc__??
'这是一个函数文档,放在函数定义的最开头部分\n第二行'

2.使用关键字参数,可以有效避免什么问题的出现呢?

关键字参数是在调用函数时,带上函数参数的名字去指定调用哪个参数,从而不用按照参数的顺序调用参数。

不使用关键字参数可能出现以下现象:

代码语言:javascript
复制
>>>?def?MyFunction1(he,she):??
????print('蒙多说%s是个大爷们'%he)??
????print('宝石说%s是个小娘们'%she)??
??
>>>?MyFunction1('拉克丝','德莱厄斯')??
蒙多说拉克丝是个大爷们??
宝石说德莱厄斯是个小娘们??

这样德莱厄斯的斧子可不答应喔,使用关键字参数即可,如下:

代码语言:javascript
复制
>>>?MyFunction1(she?=?'拉克丝',he?='德莱厄斯')??
蒙多说德莱厄斯是个大爷们??
宝石说拉克丝是个小娘们??

3.使用help(print)查看print()这个BIF有哪些默认参数?分别起到什么作用?

代码语言:javascript
复制
print(...)??
????print(value,?...,?sep='?',?end='\n',?file=sys.stdout,?flush=False)??
??????
????Prints?the?values?to?a?stream,?or?to?sys.stdout?by?default.??
????Optional?keyword?arguments:??
????file:??a?file like?object?(stream);?defaults?to?the?current?sys.stdout.??
????#文件类型对象:默认是sys.stout(标准输出流)??
????sep:???string?inserted?between?values,?default?a?space.??
????#第一个参数如果有多个值(第一个参数是手收集参数),各个参数之间默认使用空格(space)隔开??
????end:???string?appended?after?the?last?value,?default?a?newline.??
????#打印最后一个值之后默认参数一个换行标志符(‘\n’)??
????flush:?whether?to?forcibly?flush?the?stream.??
????#是否强制刷新流??

4.默认参数和关键字参数表面最大的区别是什么?

默认参数是在函数定义时就为形参赋予初值,若调用函数时没有为形参传递实参,则使用用默认参数。关键字参数是在调用函数时,传递实参时指定对应的形参。

动动手

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

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

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

代码语言:javascript
复制
>>>?def?MyFunction2(*param,?base?=?3):??
????'计算第一个参数的和,然后乘以第二参数的结果'??
????result?=?0??
????for?each?in?param:??
????????result?+=?each??
??????
????result?*=?base??
??
????print('计算结果是:',result)??
>>>?MyFunction2(2,3,4,5,6)??
计算结果是:?60??

1.寻找水仙花数

题目要求:如果一个3位数等于其各位数字的立方和,则称这个数为水仙花数。例如153 = 1^3 + 5^3 + 3^3,因此153是一个水仙花数。编写一个程序,找出所有水仙花数。

代码语言:javascript
复制
>>>?def?FindFlower():??
????'计算所有的水仙花数'??
????print('所有水仙花数:')??
????for?each?in?range(100,1000):??
????????baiwei?=?each//100??
????????shiwei?=?(each?-?100*baiwei)//10??
????????gewei?=?each%10??
????????count?=?baiwei**3?+?shiwei**3?+?gewei**3??
????????if?count?==?each:??
????????????print(each,?end?=?'\t')??
??
??????????????
>>>?FindFlower()??
所有水仙花数:??
153?370?371?407??

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

代码语言:javascript
复制
>>>?def?findstr(str1,str2):??
????'统计第一个字符串参数(长度为2)在第二个字符串参数出现次数'??
????length?=?len(str2)??
????count?=?0??
????if?str1?not?in?str2:??
????????print('在目标字符串中未找到子字符串!')??
????else:??
????????for?each?in?range(length?-?1):??
????????????if?str2[each]?==?str1[0]:??
????????????????if?str2[each?+?1]?==?str1[1]:??
????????????????????count?+=?1??
????print('子字符串在目标字符串中共出现%d次'?%count)??
??
??????
>>>?findstr('im','You?cannot?improve?your?past,?but?you?can?improve?your?future.?Once?time?is?wasted,?life?is?wasted.')??
子字符串在目标字符串中共出现3次??
本文参与?腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年07月30日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客?前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 测试题
  • 动动手
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com