1. 程式人生 > >Python3 的函數(2)

Python3 的函數(2)

函數定義 oba cti 需要 print 局部變量 you word hello

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=\t) 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))
            

Python3 的函數(2)