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