小甲鱼python听课笔记 p18 -p20 函数部分

p18 函数:LEGO- def()

创建、定义、调用函数

小甲鱼python听课笔记 p18 -p20 函数部分_第1张图片

小甲鱼python听课笔记 p18 -p20 函数部分_第2张图片

函数返回值

小甲鱼python听课笔记 p18 -p20 函数部分_第3张图片

课后习题:

小甲鱼python听课笔记 p18 -p20 函数部分_第4张图片

答案是0个,这个写法是错误的,正确如下:小甲鱼python听课笔记 p18 -p20 函数部分_第5张图片

解析:其中MyFun()函数中的x即(3,4),y即(1,2)

小甲鱼python听课笔记 p18 -p20 函数部分_第6张图片

利用欧几里得算法求最大公约数

1、 编写一个函数,利用欧几里得算法(脑补链接)求最大公约数,例如 gcd(x, y) 返回值为参数 x 和参数 y 的最大公约数。

小甲鱼python听课笔记 p18 -p20 函数部分_第7张图片

小甲鱼python听课笔记 p18 -p20 函数部分_第8张图片

除二取余

2、编写一个将十进制转换为二进制的函数,要求采用“除2取余”(补脑链接)的方式,结果与调用 bin() 一样返回字符串形式。

小甲鱼python听课笔记 p18 -p20 函数部分_第9张图片

p19 函数:参数(灵活即强大)

形参parameter、实参argument

形参:函数定义时小括号里面的参数

实参:函数调用时传递进去的参数

函数文档

一般系统的特殊属性都是由双向下划线开始,双向下划线结束

小甲鱼python听课笔记 p18 -p20 函数部分_第10张图片

用help访问函数可以看到文档字符串

小甲鱼python听课笔记 p18 -p20 函数部分_第11张图片

又比如print函数

小甲鱼python听课笔记 p18 -p20 函数部分_第12张图片

关键字参数

有了关键字参数的提示后,python就是按照关键字索引参数

小甲鱼python听课笔记 p18 -p20 函数部分_第13张图片

收集参数

主要是函数作者自己也不清楚这个函数究竟要多少个参数

 

小甲鱼python听课笔记 p18 -p20 函数部分_第14张图片

注意在收集参数后面,如果还要加上其他定制的参数,那么在调用函数的时候要使用关键字参数,否则python要将他们全部列为收集参数的范畴

小甲鱼python听课笔记 p18 -p20 函数部分_第15张图片

同理这样也可以:

小甲鱼python听课笔记 p18 -p20 函数部分_第16张图片

课后习题:?存在问题

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

a) 计算打印所有参数的和乘以基数(base=3)的结果
b) 如果参数中最后一个参数为(base=5),则设定基数为5,基数不参与求和计算

小甲鱼python听课笔记 p18 -p20 函数部分_第17张图片

小甲鱼python听课笔记 p18 -p20 函数部分_第18张图片

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

小甲鱼python听课笔记 p18 -p20 函数部分_第19张图片

小甲鱼python听课笔记 p18 -p20 函数部分_第20张图片

018.2.py – ???有问题

 

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].upper() == subStr[0].upper():

                if desStr[each1+1].upper() == subStr[1].upper():

                    count += 1

                   

        print('子字符串在目标字符串中共出现 %d 次' % count)

 

desStr = input('请输入目标字符串:')

subStr = input('请输入子字符串(两个字符):')

findStr(desStr, subStr)

 

 

我的答案:

def findstr():

    print('请输入目标字符串:',end='')

    des_str = input()

    print('请输入子字符串(两个字符):',end='')

    sub_str = input()

    len_des = len(des_str)

    len_sub = len(sub_str)

    if sub_str not in des_str:

        print('不在')

    else:

        count =0

        i=0

        for each in range(len_des):

            while i<=len_sub:

                if sub_str[i] == des_str[each]:

                    if i==len_sub:

                        count+=1

                    i+=1

                    each+=1

                else:

                    each+=1

                    i=0

    print('出现多少次:',count)

 

findstr()

 

 

不知道错在哪啊啊啊啊啊

 

p20 函数:(我的地盘)

python严格来说只有函数没有过程

python返回值

python有返回值时返回一个值,没有时返回一个none对象

小甲鱼python听课笔记 p18 -p20 函数部分_第21张图片

python可以返回多个值

小甲鱼python听课笔记 p18 -p20 函数部分_第22张图片

函数作用域

局部变量(local Variable)

全局变量(Globle Variable)

课后练习:

0.编写一个函数,判断传入的字符串参数是否为“回文联”(回文联即用回文形式写成的对联,既可顺读,也可倒读。例如:上海自来水来自海上)。

思想:用list,(想下为什么用list)

小甲鱼python听课笔记 p18 -p20 函数部分_第23张图片小甲鱼python听课笔记 p18 -p20 函数部分_第24张图片

1. 编写一个函数,分别统计出传入字符串参数(可能不只一个参数)的英文字母、空格、数字和其它字符的个数

我的方法:

小甲鱼python听课笔记 p18 -p20 函数部分_第25张图片

小甲鱼python听课笔记 p18 -p20 函数部分_第26张图片

小甲鱼的:

小甲鱼python听课笔记 p18 -p20 函数部分_第27张图片

小甲鱼python听课笔记 p18 -p20 函数部分_第28张图片

 

你可能感兴趣的:(python)