20180712 (函數,函數的返回值return,函數的參數以及實際運用)

函數      (函數的命名規則和變量同樣:①是由字母,數字,下劃線組成②開頭不是數字,更不能是純數字③不能是關鍵字④不要用中文⑤要有意義⑥區分大小寫⑦不要太長⑧推薦駝峯和下劃線格式)git

一.函數的含義函數

先定義一個事情或者功能,等到須要的時候直接去用,這列定義的一個東西就是函數ui

函數的語法;spa

  def  函數名(形參):3d

    函數體utf-8

  函數名(實參)rem

函數就是對代碼塊和功能的封裝和定義字符串

二.函數的定義input

例如:    步驟分爲4步驟:  ①先定義def  函數名   ②調用函數   ③準備執行函數   ④  執行函數  it

  #首先定義一個功能叫chi()  ===>      (函數名)

  def chi():

    print("首先,打開手機")                   中間print部分是函數體,代碼塊

    print("打開手機美團")                        (函數被執行後要執行的代碼塊)

    print("選擇一家餐廳")

    print("點餐")                           ==>當函數最後一句話完成的時候,函數完成

  chi()   =====>函數的調用   #執行函數           當函數執行完畢,表示當前本次chi()執行完畢

  print("減肥")

  chi()

三.函數的返回    (return)      是要函數執行到return,函數就會中止     (return    返回值    當函數結束的時候,給調用者一個結果)

例如:

  def chi():

    print("首先,打開手機")

    print("打開美團外賣")

    print("點餐")

    print("吃飯")

    return "減肥"                  ====>return在這裏返回了一個結果,就是作這件事情以後的結果是什麼

  ret = chi()

  print(ret) 

函數的返回主要有四個方面的總結:

1.每一個函數若是在函數中不寫return,默認返回None

例如:

  def chi():

    print("洗菜")

    print("切菜")                                洗菜

    print("作飯")                      ====>切菜

                                                            作飯

  ret = chi()                                           None

  print(ret)

2.每一個函數中若是在函數中的return後面什麼都不寫   默認返回None值

例如:

  def chi():

    print("洗菜")

    print("切菜")                                洗菜

    print("作飯")                  ======>切菜

    return                                          作飯

  ret = chi()                                           None

  print(ret)

3.return後面只寫一個值,則調用者能夠接收到一個結果

例如:

  def chi()

    print("洗菜")                                洗菜

    print("切菜")                                切菜

    print("作飯")                        ===>作飯

    return  "刷碗"                              刷碗

  ret = chi()

  print(ret)

4.若是return後面寫了多個結果,則調用者能夠接收到一個元組(tuple),調用者能夠直接解構成多個變量

例如:

  def chi()

    print("洗菜")                           洗菜

    print("切菜")                           切菜

    print("作飯")                              作飯

    return  "收拾","刷碗","休息"                      =====>             收拾

  a,b,c = chi()   ret = chi()               刷碗

  print(a)     print(ret)  (這個打印出來的是個元組)  休息

  print(b)            

  print(c)

四.函數的參數    (在函數執行的時候給函數傳遞的信息)

函數的參數個數是沒有要求的,可是在運行的時候,形參與實參要匹配,按照位置把實參賦值給形參

(1)站在實參的角度上有三個參數:①位置參數②關鍵字參數③混合參數

形參(在函數聲明的位置,聲明出來變量)

①位置參數

例如:

  def chi(fangshi):

    print("打開手機")

    print("打開%s"軟件"  %  fangshi)

    print("點餐")                                           ======>打印兩邊chi()函數    美團外賣和餓了麼各執行一次

  chi("美團外賣")      實參(在函數調用的時候,實際你給的函數傳遞的值)

  chi("餓了麼")

②關鍵字參數(形參)       在實參調用的時候,能夠指定參數的值是多少

例如:           (按照名稱給形參賦值)

  def chi(a,b,c):

    print(a)

    print(b)                          =====> a = 2,b = 3,c = 1

    print(c)

  fn(1,2,3)

  fn(b = 3,a = 2,c = 1)

③混合參數     順序(先寫位置參數,後寫關鍵字參數,不然會報錯)

例如:

  def gn(name,age,sex,address,hobby)

    print("姓名是%s,年齡是%s,性別是%s,家住地址是%s,愛好是%s"  %  (name,age,sex,address,hobby))

  gn("劉懷源",22,"女","濟源市","美食")                           (位置參數)

  gn(name="劉懷源",address = "濟源市",hobby = "美食",sex = "女",age = 22)                  (關鍵字參數)

  gn("劉懷源",22,女,hobby = "美食",address = "濟源市")                    (混合參數)

(2)站在形參的角度上有三種參數 ①位置參數 ② 默認值參數  ③默認值參數和位置參數混着用

①位置參數

②默認值參數

例如:

  def regist(id,name,sex="女")       sex = 女    已經給sex賦予值了   若是是,下面就不須要再寫,此時就是默認值參數

    print("錄入學生信息:id%s,名字:%s,性別:%s"  %  (id,name,sex))

  regist(1,"劉懷源","女")                                  (位置參數)

  regist(2,"郭曉君",)                                    (默認值參數)

  regist(3,"張舒文","男")              若是實際不是默認值參數的話,就自行添加

③默認值參數和位置參數混着用

順序(先寫位置參數,後寫默認值參數)

  def xinxi(name,age,sex = "女",address = "焦做市"):
    print("姓名是%s,年齡:%s,性別:%s,地址是%s" % (name,age,sex,address))
  xinxi("劉懷源",22)
  xinxi("郭曉君",22,)
  xinxi("劉亞楠",23,)
  xinxi("張舒文",22,"男")

 打印出來的結果:

  姓名是劉懷源,年齡:22,性別:女,地址是焦做市
  姓名是郭曉君,年齡:22,性別:女,地址是焦做市
  姓名是劉亞楠,年齡:23,性別:女,地址是焦做市
  姓名是張舒文,年齡:22,性別:男,地址是焦做市

 五.函數的實際運用

例如:

 1+2+3+4+5+..........+100 = ?

  def sum(n)

    s = 0

    count = 1

    while count < = n:

      s = s + count

      count = count + 1                          對功能的封裝

    return s

  ret = sum(100)

  print(ret)

 計算n是奇數仍是偶數

  def fn(n)

    if n %2 == 0:

      return"偶數"

    else:

      return"奇數"

  ret = fn(一個數)                         ====>print(fn(一個數))

  print(ret)

 

 

 

做業題:

1.寫函數,計算傳入函數的字符串中, 數字、字母、空格 以及 其餘內容的個數,並返回結果

  def func(str):

    num = 0

    zimu = 0

    kongge = 0

    qita = 0

    for i in str:

      if i.isdigit():

        num += 1

      elif i.isalpha():

        zimu += 1

      elif i.isspace():

        kongge += 1

      else:

        qita += 1

    return (num,zimu,kongge,qita)

  ret = func("123defg  *&%%")

  print(ret)

2.寫函數,函數接收四個參數分別是:姓名,性別,年齡,學歷。用戶經過輸入這四個內容,而後將這四個內容傳入到函數中,此函數接收到這四個內容,將內容追加到一個student_msg文件中。支持用戶持續輸入,Q或者q退出,性別默認爲男,若是遇到女學生,則把性別輸入女。

   def func(name,age,stu,sex="男"):
     f = open("sutdent_msg",mode="a",encoding="utf-8")
     f.write("名字是:%s,性別是%s,年齡是%s,學歷是%s\n" % (name,age,stu,sex))
     f.flush()
     f.close()
     return (name,sex,age,stu)
   while 1:
     tuichu = input("請輸入Q或q退出")
     if tuichu.upper() == "Q":
       break
     name = input("名字:")
     age = input("年齡:")
     stu = input("學歷:")
     sex = input("性別:")
     if sex == "女":
       ret = func(name, age, stu, sex)
     else:
       ret = func(name, age, stu)
     print(ret)

3.寫函數,用戶傳入修改的文件名,與要修改的內容,執行函數,完成整個文件的批量修改操做(升級題)

 

 

   def func(f,old,new):
     import os
     with open(f,mode="r",encoding="utf-8") as f1,open(f+"副本",mode="w",encoding="utf-8") as f2:
       s = f1.read()
       ss = s.replace(old,new)
       f2.write(ss)
     os.remove(f)
     os.rename(f+"副本",f)
   func("chi","菜","肉")

4.寫一個函數完成三次登錄功能

  def func(name,password):

    num = 1

    while num <=3 :

      n1 = input("請輸入用戶名:")

      p1 = input("請輸入密碼:")

      if n1== name and p1 == password:

        print("登陸成功")

        break

      else:

        print("登陸失敗")

      num = num + 1

  func("劉懷源","123")

相關文章
相關標籤/搜索