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