zoukankan      html  css  js  c++  java
  • Python3 的函数(2)

    1、形参和实参

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

      x为形参,y为实参.

    2、函数文档

    在函数内用单引号引起来的一段文字,在调用函数时不会输出,写函数文档可以帮组他人理解,可以用help(函数名)查看或者函数名.__doc__打印函数文档

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

    3、参数

    1)关键字参数

      在调用参数时戴上参数名字去指定具体调用哪个参数,可以忽略参数的顺序调用函数

    >>> def SaySome(name, words):
            print(name + '->' + words)
    
    >>> SaySome(words='让编程改变世界!', name='you')

    2)默认参数

      赋予形参默认值,在没给函数参数时,使用默认值

    3)收集参数:搞不清要用多少参数时用收集参数,当其后还需要其他参数时需使用关键字参数

    def bc(*prama,base=3):
    '函数实现将传入的每一个实参倍乘3,可以通过关键字参数改变base值'
        for  each in prama:
           print(base*each) 
    
    >>> bc(1,2,3,4,5)
    3
    6
    9
    12
    15
    
    >>> bc(1,2,3,4,5,base=5)
    5
    10
    15
    20
    25

    4、求水仙花数

    def Narcissus():
        for each in range(100, 1000):
            temp = each
            sum = 0
            while temp:
                sum = sum + (temp%10) ** 3
                temp = temp // 10  # 注意这里用地板除
    
            if sum == each:
                print(each, end='	')
    
    print("所有的水仙花数分别是:", end='')
    Narcissus()
    def ncs(low=0,high=1000):
        for each in range(low,high):        
            if (each//100)**3+(each%100//10)**3+(each%10)**3==each:
                print(each)
        

    5、编写统计长度为2的子字符串长度在目标字符串内的个数

    def findStr(desStr, subStr):
        count = 0
        length = len(desStr)
        if subStr not in desStr:
            print('在目标字符串中未找到字符串!')
        else:
            for each1 in range(length-1):      
                if desStr[each1] == subStr[0]:
                    if desStr[each1+1] == subStr[1]:
                        count += 1
                        
            print('子字符串在目标字符串中共出现 %d 次' % count)
    
    desStr = input('请输入目标字符串:')
    subStr = input('请输入子字符串(两个字符):')
    findStr(desStr, subStr)
    def findstr(dis_str,sub_str):
        count=0
        if not  sub_str in dis_str:
                print("目标字符串中未找到子字符串")
        else:
            for i in range(len(dis_str)-1):            
                if dis_str[i]+dis_str[i+1]==sub_str:
                    count+=1      
            print("子字符串在目标字符串中共出现",count,"")
        
    dis_str = input("请输入目标字符串:")
    sub_str = input("请输入子字符串(两个字符):")

    6、函数与过程

      函数是有返回值的,过程是无返回值的

    严格来说Python里都是函数,没有过程,应为不管函数有没有返回值python都会返回一些东西,无返回时返回一个None对象

    >>> def hello():
            print('Hello !')
    
    >>> temp = hello()
    Hello FishC!
    >>> temp
    >>> print(temp)
    None

      python可以返回多个类型不同的值

    def mFun():
        return '加油','追求自己想要的生活!
    
    >>> mFun()
    ('加油', '追求自己想要的生活!')

    7、变量

    1)局部变量:函数里的变量

    2)全局变量:在函数外的变量

    注意:在函数里修改全局变量是无效的,python会新建与全局变量名字相同的局部变量

    def fun(var):
        var = 1314
        print(var, end='')
    
    var = 520
    fun(var)
    print(var)
    var = ' Hi '
    
    def fun1():
        global var
        var = ' Baby '
        return fun2(var)
    
    def fun2(var):
        var += 'I love you'
        fun3(var)
        return var
    
    def fun3(var):
        var = ' 小天使 '
    
    print(fun1())
     
    Baby I love you
    >>> var
    ' Baby '

    不到万不得已不要使用全局变量!用多了容易出BUG啊

    8、判断是否是回文联

    def palindrome(string):
        length = len(string)
        last = length-1
        length //= 2
        flag = 1
        for each in range(length):
            if string[each] != string[last]:
                flag = 0
            last -= 1
    
        if flag == 1:
            return 1
        else:
            return 0
    
    string = input('请输入一句话:')
    if palindrome(string) == 1:
        print('是回文联!')
    else:
        print('不是回文联!')
    def elf(x):
        x=list(x)
        rex=x[:]
        rex.reverse()
        if rex==x:
            print('是回文联!')
        else:
            print('不是回文联!')
    
    
    x=input("请输入一句话:")
    elf(x)
        

    9、统计字符串

    def Count(*strs):#estr every str
        cstr=0  
        for estr in strs:
            cstr+=1
            cnum=0
            cchar=0
            cempty=0
            celse=0
            for echar in estr:
                
                if echar.isdigit():
                    cnum+=1
                elif echar.isalpha():
                    cchar+=1
                elif echar == ' ':
                    cempty+=1
                else:
                    celse+=1
            print('第%d'% cstr, '个字符串共有:英文字母个%d'%cchar,',数字个%d'%cnum,
                  ',空格%d个'%cempty,',其他字%d符个'%celse )
    def count(*param):
        length = len(param)
        for i in range(length):
            letters = 0
            space = 0
            digit = 0
            others = 0
            for each in param[i]:
                if each.isalpha():
                    letters += 1
                elif each.isdigit():
                    digit += 1
                elif each == ' ':
                    space += 1
                else:
                    others += 1
            print('第 %d 个字符串共有:英文字母 %d 个,数字 %d 个,空格 %d 个,其他字符 %d 个。' % (i+1, letters, digit, space, others))
                
  • 相关阅读:
    余额宝收益查询_最新收益率
    以数据结构为核心的编程方法
    CMake使用技巧
    使用Boost库(1)
    C++程序的目录结构、编译、打包、分发
    Header Only Library
    为什么要学习数据结构和算法?
    自己手动构建文件服务器
    今天笔试的几道题目分享-三页智力题+三页程序题
    【转】委托的N种写法,你喜欢哪种?
  • 原文地址:https://www.cnblogs.com/PythonFCG/p/13860174.html
Copyright © 2011-2022 走看看