Python3 的函數(2)
阿新 • • 發佈:2018-01-27
函數定義 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 # 註意這裏用地板除 ifsum == 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)