《假如編程是魔法之零基礎(chǔ)看得懂的Python入門教程 》——(七)我把魔法變成了積木
學(xué)習(xí)目標
了解魔法積木的使用——自定義函數(shù)
了解魔法積木的結(jié)果反饋——自定義函數(shù)返回值
了解魔法積木的原料傳遞——自定義函數(shù)傳參
了解魔法積木的類型分類——類與對象
推薦
1.《備受好評的看得懂的C語言入門教程》
目錄
第一篇:《假如編程是魔法之零基礎(chǔ)看得懂的Python入門教程 》——(一)既然你選擇了這系列教程那么我就要讓你聽得懂
第二篇:《假如編程是魔法之零基礎(chǔ)看得懂的Python入門教程 》——(二)魔法實習(xí)生第一步了解魔杖的使用
第三篇:《假如編程是魔法之零基礎(chǔ)看得懂的Python入門教程 》——(三)使用初始魔法跟編程魔法世界打個招呼吧
第四篇:《假如編程是魔法之零基礎(chǔ)看得懂的Python入門教程 》——(四)了解魔法百寶箱列表、字典及基本數(shù)據(jù)類型
第五篇:《假如編程是魔法之零基礎(chǔ)看得懂的Python入門教程 》——(五)我的魔法竟然有了一絲邏輯
第六篇:《假如編程是魔法之零基礎(chǔ)看得懂的Python入門教程 》——(六)精簡魔法更強大
本系列教程將會以一種“魔法世界”的形式編寫,歡迎各位支持。
歡迎大家關(guān)注公眾號,公眾號每滿1024及1024倍數(shù)則會抽獎贈送機械鍵盤一份+IT書籍2份喲~并且公眾號會更快更新喲。
一、了解魔法世界中的積木
我們通過之前章節(jié)的學(xué)習(xí)了解了一些基本的python編程,但是在我們編寫代碼過多的時候,將會導(dǎo)致代碼雜亂,并且整體邏輯不便于查看,出現(xiàn)一個錯誤則需要通過較多的流程去排錯。那么我們的代碼有一部分是通過積木搭建的方式組合成代碼,弱一部分出錯,就會很快的定位錯誤在哪一個積木塊里面,這時就只需要修改那個積木內(nèi)的代碼就可以修正錯誤。這樣做是不是就可以極的使我們的代碼結(jié)構(gòu)清晰,并且易于修改錯誤了呢?答案當(dāng)然是對的。
1.1 了解自定義函數(shù)的編寫
我們在編寫一個點餐系統(tǒng)的時候,若經(jīng)常會提示菜單欄,讓用戶進行選擇。若用戶進入了其它頁面,再返回首頁的時候又需要出新菜單的提示,那我們又需要重新輸出一次。這樣是不是就特別麻煩?我們可以看看以下示例:
print('請選擇你要吃的食物序號進去付款') print('1.宮保雞丁') print('2.香辣雞翅') print('3.糯米飯') print('3.餃子') print('4.沙縣經(jīng)典三件套') print('5.五花八門大丸子') c=int(input('請輸入菜單序號:')) if c: print('正在連接付款...') b=input('任意鍵返回...') if b: print('正在返回...') print('請選擇你要吃的食物序號進去付款') print('1.宮保雞丁') print('2.香辣雞翅') print('3.糯米飯') print('3.餃子') print('4.沙縣經(jīng)典三件套') print('5.五花八門大丸子')
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
以上示例只是作為模擬當(dāng)時情景,代碼不作為功能的參考。代碼最開始,提示了菜單內(nèi)容,代碼如下:
print('請選擇你要吃的食物序號進去付款') print('1.宮保雞丁') print('2.香辣雞翅') print('3.糯米飯') print('3.餃子') print('4.沙縣經(jīng)典三件套') print('5.五花八門大丸子')
1
2
3
4
5
6
7
提示內(nèi)容后,接收用戶輸入一個值。用戶輸入的值,在此輸入任意值均可,判斷代碼的編寫:
if c:
1
以上代碼對c變量進行判斷,只要不是為空,那么任意數(shù)字都行。在python中,空的值最終判斷為False假,若有值都將為True真。隨后模擬連接支付系統(tǒng),長時間則隨意輸入一個值確定后返回:
c=int(input('請輸入菜單序號:')) if c: print('正在連接付款...') b=input('任意鍵返回...') if b: print('正在返回...')
1
2
3
4
5
6
接著再重新將菜單欄輸出。這是的菜單欄明顯是重復(fù)的代碼,使用了兩次;這樣的代碼看起來是不是太繁瑣了?簡直從視覺上就增加了難度。不過不用擔(dān)心,python提供了自定義函數(shù)讓我們解決這個問題。自定義函數(shù)表示自己可以定義的功能塊,這個功能塊可以重復(fù)使用,這個功能塊可以有多條代碼組成。
現(xiàn)在我們將菜單欄定義成一個自定義函數(shù)。定義成一個自定義函數(shù)的語法為def開頭,后接一個空格;空格后接一串字符表示該功能塊的名稱;隨后一堆圓括號,在圓括號后打上一個冒號。代碼如下:
def caidan():
1
以上代碼使用def開頭,表示我要編寫一個自定義函數(shù),隨后接上名稱caidan,之后接一堆圓括號,一個冒號結(jié)束;接下來需要在函數(shù)中編寫函數(shù)的代碼,此時我們需要統(tǒng)一縮進格式,至少有一個:
def caidan(): #這里寫caidan這個功能的代碼 #這里寫caidan這個功能的代碼
1
2
3
我們可以直接把菜單提示的代碼全部復(fù)制黏貼到這個自定義函數(shù)caidan中:
def caidan(): print('請選擇你要吃的食物序號進去付款') print('1.宮保雞丁') print('2.香辣雞翅') print('3.糯米飯') print('3.餃子') print('4.沙縣經(jīng)典三件套') print('5.五花八門大丸子')
1
2
3
4
5
6
7
8
那如上編寫對了嗎?錯了!一定要記得自定義函數(shù)后,你需要編寫該函數(shù)的功能一定要緊接著在函數(shù)名下使用縮進表示結(jié)構(gòu);所以該代碼的正確寫法應(yīng)該如下:
def caidan(): print('請選擇你要吃的食物序號進去付款') print('1.宮保雞丁') print('2.香辣雞翅') print('3.糯米飯') print('3.餃子') print('4.沙縣經(jīng)典三件套') print('5.五花八門大丸子')
1
2
3
4
5
6
7
8
這是自定義函數(shù)功能已經(jīng)編寫完畢,那如何使用呢?很簡單,你們應(yīng)該記得print的使用方法吧?print和input都是函數(shù),這些是系統(tǒng)自帶的函數(shù);它們的使用方法是在函數(shù)名后加一對括號。如input();我們自己編寫的函數(shù)使用方法一致,直接函數(shù)名后加一對括號就可以完成自定義函數(shù)的使用,如:caidan()。先看這一部分的完整代碼:
def caidan(): print('請選擇你要吃的食物序號進去付款') print('1.宮保雞丁') print('2.香辣雞翅') print('3.糯米飯') print('3.餃子') print('4.沙縣經(jīng)典三件套') print('5.五花八門大丸子') caidan() c=int(input('請輸入菜單序號:')) if c: print('正在連接付款...') b=input('任意鍵返回...') if b: print('正在返回...') print('請選擇你要吃的食物序號進去付款') print('1.宮保雞丁') print('2.香辣雞翅') print('3.糯米飯') print('3.餃子') print('4.沙縣經(jīng)典三件套') print('5.五花八門大丸子')
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
以上代碼在頭部就定義了自定義函數(shù)caidan,并且在caidan函數(shù)中編寫了功能;在函數(shù)下的代碼第一行,直接使用了caidan()調(diào)用函數(shù),這是caidan()就等于函數(shù)內(nèi)的代碼:
print('請選擇你要吃的食物序號進去付款') print('1.宮保雞丁') print('2.香辣雞翅') print('3.糯米飯') print('3.餃子') print('4.沙縣經(jīng)典三件套') print('5.五花八門大丸子')
1
2
3
4
5
6
7
在程序運行時應(yīng)該顯示函數(shù)中的代碼運行結(jié)果:
從運行結(jié)果上可以得知,使用caidan()替代了那一大串代碼,那我們也可以把原本代碼中的底部的菜單提示給取消;代碼如下:
def caidan(): print('請選擇你要吃的食物序號進去付款') print('1.宮保雞丁') print('2.香辣雞翅') print('3.糯米飯') print('3.餃子') print('4.沙縣經(jīng)典三件套') print('5.五花八門大丸子') caidan() c=int(input('請輸入菜單序號:')) if c: print('正在連接付款...') b=input('任意鍵返回...') if b: print('正在返回...') caidan()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
運行結(jié)果:
運行結(jié)果一致,但是代碼少了很多,看起來就清爽多了。
1.2 了解有參數(shù)的自定義函數(shù)
還記得我們前幾節(jié)內(nèi)容中完成的兩個數(shù)做加法運算的內(nèi)容嗎?需求是用戶輸入兩個整數(shù),計算機自動算出兩個數(shù)之和,并且會顯示出來告知我們。我們可以使用函數(shù)完成這個功能,方便我們之后需要使用到該功能的時候直接調(diào)用這個函數(shù)就可以了。
首先我們定義個函數(shù),名為jiafa:
def jiafa():
1
這個函數(shù)需要傳入兩個值,函數(shù)只負責(zé)做加法運算,那如何編寫呢?這時需要哦們添加兩個參數(shù),參數(shù)是指你需要用于“計算”的數(shù)字;就像平常你使用電飯鍋,電飯鍋的參數(shù)可以是米和水,因為電飯鍋的作用是做飯,沒米沒水怎么做飯?我們的兩數(shù)加法函數(shù)也一樣,沒有數(shù)字怎么樣進行計算?所以我們需要傳入兩個值,這兩個值就是參數(shù)。參數(shù)寫在jiafa后的圓括號內(nèi);參數(shù)我們可以使用兩個變量代替,例如數(shù)1變量:s1,數(shù)2變量:s2,那么代碼為:
def jiafa(s1,s2):
1
這樣就表示這個函數(shù)可以傳入2個參數(shù),當(dāng)然可以更多參數(shù),在此只是做為一個舉例。傳入多個參數(shù)需要使用逗號對參數(shù)進行間隔。接收數(shù)后我們接下來就可以開始對這兩個變量進行計算。兩個變量相加那就是:
print(s1+s2)
1
完整jiafa函數(shù)代碼為:
def jiafa(s1,s2): print(s1+s2)
1
2
那如何使用呢?還記得print怎么傳參數(shù)嗎?print需要將顯示的值傳入到圓括號中;自定義函數(shù)的參數(shù)傳遞也是類似。我們傳入兩個數(shù),一個1和一個10,代碼寫成:
jiafa(1,10)
1
完整代碼如下:
def jiafa(s1,s2): print(s1+s2) jiafa(1,10)
1
2
3
4
運行結(jié)果為:
這是可以看到,輸入1和10,他們之間使用逗號進行間隔,其中1的值將賦值給s1,10的值存入到s2,這是計算s1變量與s2變量的相加,那么輸出結(jié)果為11。
那我們修改代碼,使用input接收我們輸入的兩個值,再進行計算,代碼為:
def jiafa(s1,s2): print('兩個數(shù)相加等于:',s1+s2) a=int(input('請輸入一個數(shù)字:')) b=int(input('請輸入另一個數(shù)字:')) jiafa(a,b)
1
2
3
4
5
6
運行結(jié)果為:
1.3 了解有返回值的自定義函數(shù)
我現(xiàn)在突然感覺,我不想在函數(shù)里面輸出,我只想拿到結(jié)果,輸不輸出我想按照當(dāng)時情況而定,那這個需求怎么實現(xiàn)呢?很簡單,我們把計算的值返回就可以了,這樣我們的函數(shù)只做計算,并不進行輸出;輸出與否按照當(dāng)時情況而定,靈活的運用。
函數(shù)的返回使用return,在自定義函數(shù)中最末位一行使用return,后接一個空格,隨后一個值;這時整個函數(shù)運行完后將會有一個結(jié)果,這個結(jié)果就是使用return返回出去的值。例如我們修改1.2中的代碼:
def jiafa(s1,s2): return s1+s2
1
2
與原程序相比少了輸出,多了一個return,并且return后接一個空格,空格后接了兩個變量相加的表達式;這個表達式并不是直接的值,不過不用擔(dān)心,表達式最終會自動計算成一個值,使用return則將該值返回。若不理解也沒關(guān)系,我們可以寫成:
def jiafa(s1,s2): r=s1+s2 return r
1
2
3
這時使用變量r接收了s1與s2的加法運算的值,最終返回r也是一樣的。
那么我們可以在代碼中調(diào)用函數(shù)后,將函數(shù)最終返回的結(jié)果賦給一個變量:
c=jiafa(a,b)
1
這時jiafa運行完自己函數(shù)內(nèi)所有的代碼后,返回一個值,這個值將給予c變量。我們再使用print輸出c即可:
print('加法計算結(jié)果為:',c)
1
或者不使用變量接收,直接使用函數(shù)返回值輸出也行:
print('加法計算結(jié)果為:',jiafa(a,b))
1
最終代碼如下:
def jiafa(s1,s2): return s1+s2 a=int(input('請輸入一個數(shù)字:')) b=int(input('請輸入另一個數(shù)字:')) print('加法計算結(jié)果為:',jiafa(a,b))
1
2
3
4
5
6
運行結(jié)果如下:
二、總結(jié)
了解自定義函數(shù)需要使用def進行定義,并且代碼內(nèi)容需要使用縮進
了解自定義函數(shù)參數(shù)的使用方法,并且多個參數(shù)使用逗號進行間隔
了解自定義函數(shù)的返回值使用return進行返回
Python
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權(quán)內(nèi)容。