函式定義、函式的引數、函式的預設引數

weixin_34026276發表於2017-11-15

函式定義

為什麼使用函式
降低程式設計難度

  • 通常將一個複雜的大問題分解成一系列的小問題,然後將小問題劃分成更小的問題,當問題細化為足夠簡單時,我們就可以分而治之。各個小問題解決了,大問題就迎刃而解了。
    程式碼重用
  • 避免重複勞作,提供效率

定義函式:def 函式名();
呼叫函式:函式名()
解釋說明:python 中使用 def 命令建立一個函式,也就是 "定義"(define)的意思,呼叫函式其實就是執行函式中的程式碼
注意事項:函式名的定義跟變數的命名規則一樣,函式名由字母、數字、下劃線組成,不能以數字開頭,不可以使用關鍵字。另外,當函式名有兩個單詞時,我們一般把第二個單詞的首字母大寫來表示這是一個函式(形成一種規範),如:isNum、hanShu、myName 等等,在後面的類中我們則是把所有首字母都寫出大寫來表示這是一個類,如:IsNum、HanShu、MyName 等等

def fun():
    print 'hello world'
fun()

結果:hello world

函式的引數

形式引數和實際引數

  • 在定義函式時,函式名後面括號中的變數名稱叫做“形式引數”,或者稱為“形參”
  • 在呼叫函式時,函式名後面括號中的變數名稱叫做“實際引數”,或者稱為“實參”

函式定義、函式的引數、函式的預設引數

函式的預設引數

1、
函式定義、函式的引數、函式的預設引數

2、
函式定義、函式的引數、函式的預設引數

3、 預設值必須放在最後,否則會報錯
函式定義、函式的引數、函式的預設引數

string方法

In [1]: import string 
In [2]: text = "Monty Python's Flying Circus"
In [3]: string.upper(text) #變為大寫
Out[4]: "MONTY PYTHON'S FLYING CIRCUS"
In [5]: string.lower(text) #變為小寫
Out[5]: "monty python's flying circus"

In [8]: string.split(text) #分割
Out[8]: ['Monty', "Python's", 'Flying', 'Circus']

In [12]: string.replace(text,'Python','java') #替換文字
Out[12]: "Monty java's Flying Circus"

In [15]: string.count(text,'P') #計算字元個數
Out[15]: 1

In [16]: string.lowercase #所有小寫字母
Out[16]: 'abcdefghijklmnopqrstuvwxyz'

In [17]: string.uppercase #所有大寫字母
Out[17]: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

In [18]: string.join(string.split(text), "+") #分割符號
Out[18]: "Monty+Python's+Flying+Circus"

In [19]: string.digits #所有數字
Out[19]: '0123456789'

練習:
1、# 1. 設計一個函式,統計任意一串字串中數字字元的個數
#例如:
#"adfdfjv1jl;2jlk1j2" 數字個數為4個
思路:1、匯入string方法,遍歷字串是否是數字,如果是則加上1,然後列印

import string
def getNumtime(text):
num=0
for i in range(0,len(text)):
if text[i] in string.digits:
num+=1
print 'num is {0}'.format(num)
getNumtime('adfdfjv1jl;2jlk1j21112')

2、# 2. 設計函式,統計任意一串字串中每個字母的個數,不區分大小寫
#例如:
#"aaabbbcccaae111"
#a 5個
#b 3個
#c 3個
#e 1個

思路:1、匯入string
2、建立一個函式,將統一變為大寫字母
3、建立一個字典,遍歷所有的大寫字母,新增到字典中
4、計算字母的 個數
方法:
In [28]: string.ascii_uppercase
Out[28]: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

def getLettersCount(text):
text = text.upper() #轉換成大寫
dict1 = dict() #建立空字典
for i in string.ascii_uppercase:
dict1.setdefault(i, 0) #將26個字母當做key增加到字典中,value為0

for i in xrange(0, len(text)):       #遍歷字串
    if text[i] in string.ascii_uppercase:       #如果在26個字母中
        dict1[text[i]] += 1                     #value加1

for k in dict1:
    if dict1[k] != 0:       #不為0的字母,列印出來
        print("{0} {1}".format(k, dict1[k]))

方法二:
In [37]: map(tmp.upper().count, string.ascii_uppercase)
Out[37]: [1, 0, 0, 4, 1, 3, 0, 0, 1, 1, 0, 0, 0, 0, 1, 2, 1, 0, 4, 0, 0, 0, 1, 0, 0, 0]

In [38]: x=[1,2,3]
In [39]: y=['q', 'w', 'e']
zip合併為
In [40]: zip(x,y)
Out[40]: [(1, 'q'), (2, 'w'), (3, 'e')]

將列表轉換為字典
In [42]: dict2=dict([(1,2),(3,4)])
In [43]: dict2
Out[43]: {1: 2, 3: 4}

dict1={'A':1,'B':2}
import string
def getsckcount(tmp):
dict1=dict(zip(string.ascii_uppercase,map(tmp.upper().count,string.ascii_uppercase)))
for k in dict1:
if dict1[k]!=0:
print '{0} {1}'.format(k,dict1[k])
while True:
tmp=raw_input('Please string: ')
if tmp!="quit":
getsckcount(tmp)
else:
break











本文轉自方向對了,就不怕路遠了!51CTO部落格,原文連結:http://blog.51cto.com/jacksoner/2056731 ,如需轉載請自行聯絡原作者



相關文章