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

    技术2025-05-27  12

    p18 函数:LEGO- def()

    创建、定义、调用函数

    函数返回值

    课后习题:

    答案是0个,这个写法是错误的,正确如下:

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

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

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

    除二取余

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

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

    形参parameter、实参argument

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

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

    函数文档

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

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

    又比如print函数

    关键字参数

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

    收集参数

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

     

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

    同理这样也可以:

    课后习题:?存在问题

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

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

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

    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可以返回多个值

    函数作用域

    局部变量(local Variable)

    全局变量(Globle Variable)

    课后练习:

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

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

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

    我的方法:

    小甲鱼的:

     

    Processed: 0.010, SQL: 9