while 、函數、參數


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("大爺的,錢終於翻倍了")

 

函數

  • 代碼的一種組織形式
  • 一個函數一般完成一項特定的功能
  • 函數使用 
    • 函數需要先定義
    • 使用函數,俗稱調用

定義一個函數,只是定義的話不會執行,

  1. def 為關鍵字
  2. 函數名自己定義
  3. 后面括號和冒號不能省略,括號內可以有參數
  4. 函數內所有代碼縮進
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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM