笔记:
1、分清楚形参和实参
2、函数文档:是函数的一部分,于解释不同,使用help(函数名)或者 函数名__doc__可以查看到
3、关键字参数(在一个函数的参数较多的时候作用比较明显):
给参数的名字下定义,例如:
def F(name,words)
如下两种引用的方法是等价的
F(A,B) = F(words=B,name=A)
4、默认参数:函数定义时为形参赋初值,函数调用时若没有传递参数,则自动使用初值
def F(name=C,words=D)
5、收集参数:
def test(*params)
test(1,'小甲鱼',3.14,7,8,9)
 
测试题:
0. 请问以下哪个是形参哪个是实参?

def MyFun(x):
  return x ** 3
y = 3
print(MyFun(y))

x是形参,y是实参。形参指的是函数创建和定义过程中小括号里的参数,而实参指的是函数在调用过程中传递进去的参数。

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

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

def MyFirstFunction(name):
  '函数文档在函数定义的最开头部分,用不记名字符串表示'
  print('I love FishC.com!')

我们看到在函数开头写下的字符串Ta是不会打印出来的,但Ta会作为函数的一部分存储起来,这个我们称之为函数文档字符串,Ta的功能跟注释是一样的。
函数的文档字符串可以按如下方式访问:

>>> MyFirstFunction.__doc__  #双低线
'函数文档在函数定义的最开头部分,用不记名字符串表示'

另外,我们用help()来访问这个函数也可以看到这个文档字符串:

>>> help(MyFirstFunction)
Help on function MyFirstFunction in module __main__:
MyFirstFunction(name)
函数文档在函数定义的最开头部分,用不记名字符串表示

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

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

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

Help on built-in function print in module builtins:

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.
sep: string inserted between values, default a space.
end: string appended after the last value, default a newline.
flush: whether to forcibly flush the stream.

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

默认参数是赋予形式参数默认值,关键字参数是使得实际参数与形参相对应而避免顺序错误引发的系统报错。
关键字参数是在函数调用的时候,通过参数名制定需要赋值的参数,这样做就不怕因为搞不清参数的顺序而导致函数调用出错。而默认参数是在参数定义的过程中,为形参赋初值,当函数调用的时候,不传递实参,则默认使用形参的初始值代替

动动手:

0. 编写一个符合以下要求的函数:
   
    a) 计算打印所有参数的和乘以基数(base=3)的结果
    b) 如果参数中最后一个参数为(base=5),则设定基数为5,基数不参与求和计算。

不会:

def Sum(*params,base=3):
  result = 0
  for i in params:
    result += i
  return result*base

1. 寻找水仙花数    

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

自己写的:

def hua():
for x in range(100,1000):
a =x%10
b =x%100//10
c =x //100
if x ==a**3+b**3+c**3:
print(x)
print(hua()) 小甲鱼:
def Daffodils():
print('所有的水仙花数为:',end='')
temp = 100
while temp < 1000:
if temp == (temp//100)**3 + ((temp%100)//10)**3 + (temp%10)**3:
print(temp,end=' ')
temp += 1
else:
temp += 1
print(Daffodils())
2. 编写一个函数findstr(),该函数统计一个长度为2的子字符串在另一个字符串中出现的次数。例如:假定输入的字符串为"You cannot improve your past, but you can improve your future. Once time is wasted, life is wasted.",子字符串为"im",函数执行后打印“子字母串在目标字符串中共出现3次”。     
程序执行效果:
不会:缩小化,按字母进行比较
def findstr():
print('请输入目标字符串:',end='')
temp = input()
print('请输入子字符串(两个字符):',end='')
comp = input()
count = 0
i = 0
for i in range(len(temp)):
if temp[i] == comp[0] and temp[i+1] == comp[1]:
count += 1
i += 1
else:
i += 1
count = int(count)
print('子字符串在目标字符串中总共出现 %d 次'%count)
findstr() 小甲鱼:
def findStr(desStr, subStr):
count = 0
length = len(desStr)
if subStr not in desStr:
print('在目标字符串中未找到字符串!')
else:
for each1 in range(length):
if desStr[each1] == subStr[0]:
if desStr[each1 + 1] == subStr[1]:
count += 1 print('子字符串在目标字符串中共出现 %d 次' % count) desStr = input('请输入目标字符串:')
subStr = input('请输入子字符串(两个字符):')
findStr(desStr, subStr)

小甲鱼Python第十七讲课后习题的更多相关文章

  1. 小甲鱼Python第二十一讲课后习题

    测试题: 0.  递归在编程上的形式是如何表现的呢? 在编程上,递归表现为函数调用本身这么一个行为. 1.  递归必须满足哪两个基本条件? 一.        函数调用自身二.        设置了正 ...

  2. 小甲鱼Python第七讲课后习题

    0.if not(money < 100):上边这行代码相当于? if money>=100 1.assert 的作用是什么? assert “断言”,当这个关键字后边的条件为假的时候,程 ...

  3. 小甲鱼Python第四讲课后习题

    1while语句中,当条件为真时,它会一直循环下去,比如下面的例子,不过可以用Ctral + C来强制结束 while 'C': print("i love you") 2.观察打 ...

  4. 小甲鱼Python第十一讲课后习题

    0. 注意,这道题跟上节课的那道题有点儿不同,回答完请上机实验或参考答案. old = [1, 2, 3, 4, 5]new = oldold = [6]print(new) 如果不上机操作,你觉得会 ...

  5. 小甲鱼Python第二十讲课后习题---021

    笔记: 1.lambda表达式的作用: 1)Python写一些执行脚本时,使用lambda就可以省下定义函数的过程,比如说我们只是需要写一个简单的脚本来管理服务器时间,我们就不需要专门定义一个函数然后 ...

  6. 小甲鱼Python第六讲课后习题

    python中被看作假:FALSE  none 0  ‘ ’  " "  ( ) [ ] { },其他一切都被解释为真 0.Python 的 floor 除法现在使用“//”实现, ...

  7. 小甲鱼Python第二十三讲课后习题--025,字典

    笔记: 1.字典是Python中唯一的映射类型 2.字典包含两个要素:键(key)和值(value)他们是成对出现的,用大括号括起来,多对存在时用逗号隔开. 3.可以用dict()直接创建字典,如di ...

  8. 小甲鱼Python第八讲课后习题

    0. 下面的循环会打印多少次"I Love FishC"?

  9. 小甲鱼Python第十三讲课后题--014字符串

     字符串的方法及注释 capitalize()     把字符串的第一个字符改为大写     casefold()     把整个字符串的所有字符改为小写     center(width)      ...

随机推荐

  1. Linux性能优化实战:系统的swap变高(08)

    一.Swap 原理 前面提到,Swap 说白了就是把一块磁盘空间或者一个本地文件(以下讲解以磁盘为例),当成内存来使用.它包括换出和换入两个过程 1.所谓换出 就是把进程暂时不用的内存数据存储到磁盘中 ...

  2. spring定时任务详解(@Scheduled注解)

    Spring配置文件xmlns加入 xmlns:task="http://www.springframework.org/schema/task" xsi:schemaLocati ...

  3. SNMP学习——v3 VACM

    目录: ☆ SNMPv3视图访问控制模型    ☆ SNMPv3报文格式    ☆ VACM参数    ☆ Context Table    ☆ Security To Group Table     ...

  4. rem是怎么计算的

    「rem」是指根元素(root element,html)的字体大小,从遥远的 IE6 到版本到 Chrome 他们都约好了,根元素默认的 font-size 都是 16px. rem是通过根元素进行 ...

  5. Notepad++崩溃后文件内容找不到问题

    也许是因为Ctrl + s 摁太多太频繁,一不小心Notepad++崩溃了 重启后发现原来的文件还在,但是文件内容全部都被清空了 我没有手动备份这个文件, 如何找回??? 点击设置,首选项,里面有个备 ...

  6. Python面试题目之Python函数默认参数陷阱

    请看如下一段程序: def extend_list(v, li=[]): li.append(v) return li list1 = extend_list(10) list2 = extend_l ...

  7. js 禁止f12、Ctrl +S 、右键

    <script language=javascript> window.onload=function(){ document.onkeydown=function(){ ]; ){ re ...

  8. vue-标签页组件

    content <template> <div class="tab-content"> <TabBar v-model="activeKe ...

  9. CentOS7.X首次安装docker无法启动的问题解决

    CentOS7.2 随着Docker的不断流行与发展,docker公司(或称为组织)也开启了商业化之路,Docker 从 17.03版本之后分为 CE(Community Edition) 和 EE( ...

  10. 【转载】Linux启动初始化配置文件浅析(解决source /etc/profile重启后就失效?)

    1)/etc/profile   登录时,会执行. 全局(公有)配置,不管是哪个用户,登录时都会读取该文件. (2)/ect/bashrc   Ubuntu没有此文件,与之对应的是/ect/bash. ...