while 循環
- 一個循環語句
- 表示當某個條件成立時就循環
- 不知道具體循環次數,但能確定循環的成立條件的時候用while循環
while 條件表達式: 語句塊
例1 :如果年利率為6.7%,本利是每年翻滾,則多少年后本錢會翻倍
benqian = 10000 year = 0 while benqian <20000: benqian = benqian * (1+0.067) year +=1 print("第{0}年拿了{1}快錢".format(year,benqian))
while ... else... 循環
while 條件表達式: 語句1 else: 語句2
如例1,當錢翻倍時,用print打印出此時的心情
benqian = 10000 year = 0 while benqian <20000: benqian = benqian * (1+0.067) year +=1 print("第{0}年拿了{1}快錢".format(year,benqian)) else: print("大爺的,錢終於翻倍了")
函數
- 代碼的一種組織形式
- 一個函數一般完成一項特定的功能
- 函數使用
- 函數需要先定義
- 使用函數,俗稱調用
定義一個函數,只是定義的話不會執行,
- def 為關鍵字
- 函數名自己定義
- 后面括號和冒號不能省略,括號內可以有參數
- 函數內所有代碼縮進
def func(): print("我是第一個函數") print("我要完成一定的功能") print("我要結束了")
函數調用:直接函數名后面跟括號
def func(): #定義函數 print("我是第一個函數") #函數用縮進分割 print("我要完成一定的功能") print("我要結束了") #這行不屬於函數 func() #調用函數
函數的參數和返回值
- 參數:負責給函數傳遞一些必要的數據或者信息 。形參(形式參數):在函數定義的時候用到的參數內有具體值,只是一個占位符號,成為形參 ; 實參 (實際參數):在調用函數的時候輸入的值
- 返回值:函數的執行結果,使用return關鍵字,如果沒有return,返回一個None,函數一旦執行return語句,則無條件返回,即結束函數的執行
#參數lisi只是一個符號,代表的是調用的時候的某一個數據
#調用的時候,會用 p 的值代替函數中所有的 lisi
def hello(lisi):
print("{0},你好".format(lisi))
print("我很好")
return '我已經和{0}打過招呼了,{0}不理我'.format(lisi)
p = "張三"
rst= hello(p)
print(rst)
運行結果:
張三,你好
我很好
我已經和張三打過招呼了,張三不理我
return 例2
def hello(lisi): print("{0},你好".format(lisi)) return "提前結束了" print("我很好") return '我已經和{0}打過招呼了,{0}不理我'.format(lisi) p = "張三" rst= hello(p) print(rst)
運行結果:
張三,你好
提前結束了
參數
參考:
https://www.cnblogs.com/bingabcd/p/6671368.htm
參數分類:
- 普通參數
- 默認參數
- 關鍵字參數
- 收集參數
普通參數:定義的時候直接定義變量名,調用的時候直接把變量或者值放入指定位置
def 函數名 (參數1 ,參數2,,,)
函數體
調用
函數名(value1,value2,。。。。)
調用的時候,具體值參考的是位置,按位置賦值
默認參數
- 形參擁有默認值
- 調用的時候,如果沒有對相應形參賦值,則使用默認值
def func_name(p1=v1,p2=v2.....): func_block #調用1 func_name() #調用2 value1 = 100 value2 = 200 fuunc_name(value1,valve2)
練習
def reg(name,age,gender="male"): if gender == "male": print("{0} is {1} and he is good student ".format(name,age)) else: print("{0} is {1} and she is a good student".format(name,age)) reg("mingyue",21,) reg("xiaojing",23,"female") 結果: mingyue is 21 and he is good student xiaojing is 23 and she is a good student
關鍵字參數
def func(p1=v1,p2=v2,,,,,):
func_booy
調用函數:
func(p1=valve1,p2=vale2,,,,,,,)
例1:
def stu(name,age,addr): print("I am a stident") print("我叫{0},我今年{1}歲了,我住{2}".format(name,age,addr)) n = "jingjing" a = 18 addr = "我家" #普通參數,只能按照位置傳遞,容易出錯 stu(name,age,addr)
換成關鍵字參數
def stu_key(name="No name",age=0,addr="No addr"): print("I am a stident") print("我叫{0},我今年{1}歲了,我住{2}".format(name,age,addr)) n = "jingjing" a = 18 addr = "我家" #關鍵字參數,位置發生變化,不會出錯 stu_key(age=a,name=n,addr=addr)
收集參數
- 把沒有位置,不能和定義時的參數位置相對應的參數,放入一個特定的數據結構中
def func(*args):
func_boby
按照list使用方式訪問安args得到傳入的參數
調用
func(p1,p2,p3,......)
- 參數args不是必須這樣寫,但是,我們推薦直接用args,約定俗成
- 收集參數可以和其他參數共存
- 參數args前需要由星號 *
例1:模擬一個學生進行自我介紹,但具體內容不清楚
def stu(*args): print("Hello 大家好") for itme in args: print(itme) stu("liuyang",18,"北京朝陽區","wangxiaojing","dansheng") stu("zhoudashen") stu() #可以為空 結果: Hello 大家好 liuyang 18 北京朝陽區 wangxiaojing dansheng Hello 大家好 zhoudashen Hello 大家好
收集參數之關鍵字收集參數
- 把關鍵字參數按字典格式存入收集參數
- kwargs一般約定俗成
- 調用的時候,把多余的關鍵字參數放入kwagrs
- 訪問kwagrs需要按字典格式訪問
def func(**kwargs):
func_booy
調用:
func(p1=v1,p2=v2.......)
例1
def stu(**kwargs): print("Hello 大家好") for k,v in kwargs.items(): print(k,":",v) stu(name="wanglan",age=18,addr="北京朝陽區") print("*" * 20) stu(name="zhangsan") 結果: Hello 大家好 name : wanglan age : 18 addr : 北京朝陽區 ******************** Hello 大家好 name : zhangsan
**kwargs 類型為字典,調用時要用items函數
def stu(name,age,*args,hobby="沒有",**kwargs): print("大家好") print("我叫{0},今年{1}歲了".format(name,age)) if hobby == "沒有": print("我沒有愛好") else: print("我的愛好是{0}".format(hobby)) print("=" * 20) for i in args: print(i) print("=" * 20) for k,v in kwargs.items(): print(k,"=",v) name = "liuyang" age = 19 stu(name,age) stu(name,age,hobby="游泳") stu(name,age,"王曉靜","劉石頭",hobby="游泳",hobby2="吃飯")
結果:
大家好
我叫liuyang,今年19歲了
我沒有愛好
====================
====================
大家好
我叫liuyang,今年19歲了
我的愛好是游泳
====================
====================
大家好
我叫liuyang,今年19歲了
我的愛好是游泳
====================
王曉靜
劉石頭
====================
hobby2 = 吃飯
ha
