马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 heidern0612 于 2018-12-17 09:56 编辑
写的内容都是自我思考的过程,难免有疏漏,有错误的地方欢迎广大鱼油给予指正!
1、实参、形参、关键字参数、默认参数:
A、形参指的是函数创建和定义过程中小括号里的参数,而实参指的是函数在调用过程中传递进去的参数。
B、关键字参数,是指函数在调用的时候,带上参数的名字去指定具体调用的是哪个参数,从而可以不用按照参数的顺序调用函数。
C、关键字参数是在函数调用的时候,通过参数名制定需要赋值的参数,这样做就不怕因为搞不清参数的顺序而导致函数调用出错。
D、而默认参数是在参数定义的过程中,为形参赋初值,当函数调用的时候,不传递实参,则默认使用形参的初始值代替。
关键字参数的定义和默认参数比较类似,举例说明:
默认参数:
def guy (name,gd = "男",pfs = "ADC",): #默认参数为gd和pfs;
print(f"你的名字是{name},性别是{gd},位置是{pfs}。")
guy("烬") #由于有两个默认参数,只需要传入一个值就行。
打印结果为:你的名字是烬,性别是男,位置是ADC。
不足之处是,传入的实参和变量必须一一对应,否则就会出现如下情况:
def guy (name,gd ,pfs = "ADC"): #前两个参数未定义,第三个默认参数为pfs;
print(f"你的名字是{name},性别是{gd},位置是{pfs}。")
guy("男","烬") #未对应位置姓名和性别位置。
打印结果为:你的名字是男,性别是烬,位置是ADC。
关键字参数如下:def guy (name,gd = "男",pfs = "ADC"): #默认参数为gd和pfs;
print(f"你的名字是{name},性别是{gd},位置是{pfs}。")
guy(pfs = "APC",gd = "女",name = "艾希")
关键字位置不用一一对应,只需要对应形参的名字就行。
2、动动手答案分析:这道题倒是很明显的可以解释默认参数(base = 3)和关键字参数(base = 5)的不同。def mFun(*param, base=3): #*param设定收集参数,不确定用户需要输入多少,用*param代替。
result = 0
for each in param: #根据用户输入多少,遍历用户输入的数据
result += each #each所有和相加
result *= base #和的结果乘以3,返回给base
print('结果是:', result)
mFun(1, 2, 3, 4, 5, base=5)
3、水仙花数算法跟之前学过的类似,小甲鱼老师只是多定义了一个def函数,不多解释了。
4、统计双字符串出现的次数 (两个字符串必须相互挨着,不能跳着算。)
分析老师的思路:
def findStr(desStr, subStr):
count = 0
length = len(desStr) #统计字符串的总长度
if subStr not in desStr:
print('在目标字符串中未找到字符串!')
else:
for each in range(length-1): #each1遍历字符串的长度数,为什么减一呢?因为2个字符串2个一起比较的话,只能比较到倒数第二位,五个字符串只能比较四次,六个字符串只能比较五次
类推,还不明白的话,自己画张5个字符的图 ,两个两个比较看能比较几次就明白了。如果这里是三个字符串呢?那就是lengh -2了。
if desStr[each1] == subStr[0]: #这个嵌套循环if比较类似红、黄、绿球那题的感觉,如果desStr的each位元素跟subStr的第一位元素比较相同的话,往下分支;
if desStr[each+1] == subStr[1]: #上面条件满足的情况下,如果desStr的each+1位元素跟subStr的第二位元素比较还是相同的话;下分支
count += 1 #count 自增1
#简单说以上两个条件都满足的情况下,count才+1;循环的次数按照(字符串的长度-1)计算。
print('子字符串在目标字符串中共出现 %d 次' % count)
desStr = input('请输入目标字符串:')
subStr = input('请输入子字符串(两个字符):')
findStr(desStr, subStr)
|