開始你的編程之旅吧!從Python入門講起……
本文轉(zhuǎn)載自公眾號“讀芯術(shù)”(ID:AI_Discovery)
我們?nèi)缃竦纳铍x不開手機(jī)、電腦和其他一些智能設(shè)備了,但你知道它們離不開什么嗎?如果沒有程序的存在,這些將什么都不是。
計算機(jī)編程是一種教計算機(jī)執(zhí)行任務(wù)的神奇藝術(shù),這是現(xiàn)代社會最值得學(xué)習(xí)的技能之一。編程的概念半個世紀(jì)前才出現(xiàn),但它所帶來的發(fā)展是非常迅速的。這一神奇的工具徹底改變了世界的方方面面。
本文中,筆者將帶領(lǐng)你使用本人最喜愛的Python語言來學(xué)習(xí)編程的概念。
一、先回答這個問題
為什么想學(xué)編程語言? 在進(jìn)一步閱讀之前,請仔細(xì)思考,并把原因?qū)懺诩埳?。有一天我也問了我的學(xué)生同樣的問題。他們給了我這些回答:
- “我想在著名的軟件公司找一份好工作,所以我需要學(xué)習(xí)一門編程語言。”
- “學(xué)習(xí)一門編程語言能讓我學(xué)習(xí)一些先進(jìn)的技術(shù),如人工智能和機(jī)器學(xué)習(xí)。”
大多數(shù)答案都與上述相似,學(xué)習(xí)一門編程語言的主要原因是為了找一份工作或者將其運(yùn)用到先進(jìn)技術(shù)中去。這個世界一直用錯誤的方式教育你,學(xué)什么就會獲得什么。你所閱讀、觀看的任何有關(guān)編程語言的教程都會從現(xiàn)實生活中的語言開始。
如果現(xiàn)實世界中已有解決方案,那么學(xué)習(xí)它又有什么用呢?
現(xiàn)在你要記住一件事——不應(yīng)為了任何目的而學(xué)習(xí)編程。實際上,誰都無法教你編程。因為“編程不是一門學(xué)科,而是人類大腦的基本能力。”
所以,在繼續(xù)閱讀之前,忘記所有學(xué)習(xí)這門語言的理由,全心全意地投入。我不確定你最終是否會成為一名軟件開發(fā)人員。但是,我相信你會認(rèn)識到編程是一門自然的語言。
二、Python編程語言
世界上有700多種編程語言可供選擇,人們只注意到了其中一部分。我從2015年開始學(xué)習(xí)編程,一開始接觸的是C語言,我現(xiàn)在也對C語言心懷敬畏。
但是,在2019年學(xué)習(xí)Python時,我第一眼就喜歡上了它,現(xiàn)在依舊如此。我也不知道為什么,可能是因為它的語法簡潔,也可能是其代碼可讀性很高。總之某些東西吸引著我讓我保持著對它的熱情。我保證你也一定會喜歡這門語言,喜歡它應(yīng)對問題的機(jī)制。
Python的創(chuàng)造者Guido van Rossum說:編寫Python代碼的樂趣在于精煉且可讀性高的類,僅通過少量清晰的代碼就能代表達(dá)大量的執(zhí)行操作,而不是瑣碎的代碼泛濫成災(zāi)。
想要挑選一種語言開啟編程生涯,你可以考慮python,因為它的代碼非常簡潔可讀。我們會用語言給別人傳達(dá)一些信息,而編程也正是一種與計算機(jī)交流的語言。如果你需要與人類語言近乎相同的編程語言,那么python適合你。
當(dāng)你和你的朋友說話時,你不需要在結(jié)尾加一個分號,也不需要提及你所談?wù)摰臄?shù)據(jù)類型,這就是人類語言。即使作為一種編程語言,Python也有同樣的特性。
看完下面的內(nèi)容,你就相當(dāng)于已經(jīng)入門Python了,開始吧!
三、如何在Python中打印信息
一個程序應(yīng)該能夠在編譯后傳遞一些內(nèi)容。通常,程序就是賦予計算機(jī)的一組指令。收到指令后,計算機(jī)理解指令,然后通過輸出(Output)值給我們回應(yīng)。而輸出值將打印在控制臺(console)的窗口上,你可以使用解釋器或IDE進(jìn)行編程。
為了便于理解,前五部分會通過想象的概念來解釋。想象你一個人坐在公園里。我來解釋下這第一個場景,當(dāng)你坐在公園的長椅上時,你看到一個老朋友坐在旁邊,現(xiàn)在你正跟那個人說:“嗨,我是Felix,還記得我嗎?”。第一個鏡頭在這里結(jié)束。
圖源:unsplash
在上述場景中,你所說的話就相當(dāng)于輸出內(nèi)容。我們可以嘗試在python的幫助下打印相同的內(nèi)容。在python中,如果希望在控制臺中打印語句,就必須使用print()命令。
這是要打印的代碼也就是你問那個人的話:
- print (“Hi. I am Felix. Do youremember me?”)
現(xiàn)在可以將其視為Python的一條指令。它將在控制臺中打印以下輸出。
- Hi. I am Felix. Do you rememberme?
通過以下四種不同的方式均可得到同一輸出:
- print (“Hi. I am Felix. Do youremember me?”)
- or
- print ('Hi. I am Felix. Do you remember me?')
- or
- print ('''Hi. I am Felix. Do you remember me?''')
- or
- print ("""Hi. I am Felix. Do you remember me?""")
四、獲取用戶輸入
現(xiàn)在回到公園來。不幸的是,你的老朋友聽不懂你說的話。所以他說:“對不起,你叫什么名字?”。現(xiàn)在,看看這種情況下的兩個表述。第一個只是聲明。但是,第二個是向你詢問以獲得信息??梢栽诳刂婆_中使用input()命令打此語句。print()和input()之間的區(qū)別在于,輸入需要在語句執(zhí)行后鍵入某些內(nèi)容。對話如下:
- print (“Hi. I am Felix. Do youremember me?”)
- input (“Sorry. What is your Name?”)
輸出……
- Hi. I am Felix. Do you rememberme?
- Sorry. What is your Name?
在這個輸出的最后,你可以在控制臺中輸入你的名字。
五、使用變量名稱的概念
告訴他你的名字后,他幾秒鐘就認(rèn)出了你。然后他說:“嗨!菲利克斯,最近過得好嗎?”。
現(xiàn)在請清楚地理解這句話。在這個表述中,他正確地使用了你的名字。這是怎么做到的?因為,在得到你的名字后,他的大腦把你的名字和某些標(biāo)簽,比如你的名字菲利克斯,一起儲存起來。有了這樣的記憶,他可以在任何地方使用你的名字。
如上所述,編程是一種自然語言,它只是人類本能的另一種表現(xiàn)形式。電腦也有一個存儲大量信息的存儲器。現(xiàn)在,(每當(dāng)使用輸入語句時)你對控制臺說出你的名字,控制臺中給定的輸入就會將其存儲在內(nèi)存位置中。之后,名字必須從內(nèi)存中檢索。
為此,我們通過賦值為輸入提供唯一的名稱。用于引用輸入的名字稱為變量。簡單來說,內(nèi)存位置的名字就是Variable。
- print (“Hi. I am Felix. Do youremember me?”)
- name = input (“Sorry. What is your Name?”)
查看修改后的代碼,其執(zhí)行與前面的代碼相同。但是,當(dāng)你在控制臺中鍵入你的名字時,名字將存儲在name的變量位置中。如果語句存儲在變量名中,則不需要雙引號。
- print (“Hi. I am Felix. Do youremember me?”)
- name = input (“Sorry. What is your Name?”)
- print(“Hey!”,name,“,How are You?”)
輸入:
- Hi. I am Felix. Do you rememberme?
- Sorry. What is your Name? Felix
- Hey! Felix,How are You?
現(xiàn)在當(dāng)你在第二行輸入你的名字時,你的名字就會被存儲在變量名' name'中。如此它可以通過print語句傳遞。
在python中,創(chuàng)建變量名時需要遵循一組規(guī)則:
- 變量名可以有字母(A - z),數(shù)字(0 - 9)和下劃線(_)。
- 變量名不應(yīng)該以任何數(shù)字開始。
- 變量名不能有特殊字符。
- 在Python中,變量名不能是一個關(guān)鍵字。
六、Python中的數(shù)據(jù)類型介紹
問你三個問題:你叫什么名字?你多大了?你對學(xué)習(xí)Python感興趣嗎?每個答案都是不同的。第一個是基于文本的數(shù)據(jù)類型,第二個是數(shù)字?jǐn)?shù)據(jù),第三個是分類數(shù)據(jù)。
數(shù)據(jù)類型的基本分類是文本、數(shù)字和是或否類型。對數(shù)據(jù)進(jìn)行分類的原因是每種類型的表現(xiàn)方式不同。從你的年齡我可以計算出你兩年后的年齡,但我不能對基于文本的數(shù)據(jù)執(zhí)行相同的操作。
在編程中,基于文本的數(shù)據(jù)稱為字符串(string)。數(shù)值數(shù)據(jù)可分為兩類:一個是int,另一個是float。int是一個整數(shù),而float類型用于小數(shù)點后的數(shù)字。第三種類型稱為boolean數(shù)據(jù)類型,它只包含兩個值“True”和“False”。
我們已經(jīng)了解了如何從用戶獲取字符串,以及如何將其打印到控制臺。獲取一個數(shù)值也是這樣,但是輸入值總是以字符串的形式出現(xiàn)。
圖源:unsplash
讓我們繼續(xù)公園的場景。過了一會兒,那個公園的老朋友問到你的年齡。年齡是一個數(shù)字?jǐn)?shù)據(jù),要詢問數(shù)字?jǐn)?shù)據(jù),輸入命令應(yīng)該通過int()傳遞。這時本性又會出來作祟。如果有人問到你的年齡,你會說25或30歲。
答案與其他問題的答案相同。但在聽到這個答案后,你的大腦會識別出它是一個數(shù)字?jǐn)?shù)據(jù)。這就是我們大腦的運(yùn)作方式,int()在編程中也是做同樣的事情。
- age = int(input(what is yourage?))
- print("Your age is",age)
輸出……
- what is your age? 26
- Your age is 26
在float()的幫助下,對float值嘗試相同的操作。
1. type()關(guān)鍵字
type()用于查找變量的數(shù)據(jù)類型,如以下代碼:
- name = "Felix"
- age = 23
- print(type(name))
- print(type(age))
輸出
- 'str'
- 'int'
2. 使用注釋進(jìn)行練習(xí)
注釋是一些不被認(rèn)為是計算機(jī)指令的語句。這些注釋可用于編寫開發(fā)人員信息、代碼用法或任何與實際代碼無關(guān)的內(nèi)容。
注釋有兩種類型:單行注釋和多行注釋。使用#創(chuàng)建單行注釋;使用'''Your Command Here '''創(chuàng)建多行注釋。
- #Single Line command
- '''This is
- a multi line
- command'''
七、運(yùn)算符及其功能
在編程中,僅僅存儲和檢索數(shù)據(jù)是不夠的。讓我們看一個例子,你要去商店買一些巧克力,現(xiàn)在一塊巧克力的價格是4.99美元,你總共需要10塊巧克力,收完巧克力后,你得付帳。現(xiàn)在,你該怎么計算金額。
在這種情況下,我們可以將巧克力的價格存儲在一個float變量中。但是我們必須把成本乘以巧克力總數(shù)來得出總價格。這是一個簡單的初等數(shù)學(xué)。
但是計算機(jī)是如何做到這一點的呢?這時需要運(yùn)算符的介入。數(shù)學(xué)中有很多像乘法這樣的運(yùn)算。為了在編程中執(zhí)行計算,我們使用了一些被稱為運(yùn)算符的符號,它通常操作兩個不同的操作數(shù)。
- PRICE = 4.99
- COUNT = 10
- TOTAL = PRICE * COUNT
操作符是*。python中操作符的主要包括算術(shù)運(yùn)算符、賦值操作符、比較運(yùn)算符、邏輯運(yùn)算符和位運(yùn)算符。
1. 算術(shù)運(yùn)算符
算術(shù)運(yùn)算符用于基本的數(shù)學(xué)運(yùn)算,如加減乘除。設(shè)a=30, b=4。

使用上述計算的Python程序。
- a = 30
- b = 4
- print(a + b)
- print(a - b)
- print(a * b)
- print(a / b)
- floor = a // b
- print(floor)
- mod = a % b
- power = a ** b
- print(mod)
- print(power)
輸出:
- 34
- 26
- 120
- 7.5
- 7
- 2
- 810000
2. 賦值操作符
賦值運(yùn)算符用于為變量賦值。主要的賦值操作符是=。
在price = 50中,將值50賦給price變量。
- a = 50
- b = 40
- a = 60
- print(a)
- print(b)
輸出:
- 60
- 40
變量將始終獲得最后的賦值。在上面的程序中,變量“a”的最后一次賦值是60。
除了操作符=之外,還有一些賦值操作符,即簡寫操作符。這些操作符用于將某個特定變量上操作返回的值存儲到變量本身。
+=就是一個簡短操作符。如果我們在編程中使用它,語法將是a+=b。這個表達(dá)式的現(xiàn)行語法是a = a + b。在對' a '和' b '賦值后,結(jié)果存儲在' a '本身。
- a = 40
- b = 60
- a += b
- print(a)
輸出:
- 100
可以使用其他短操作符(如-=、*=、/=、**= //=、%=)來執(zhí)行這種類型的程序。幾乎所有的算術(shù)運(yùn)算符都支持短操作。
3. 比較運(yùn)算符
比較運(yùn)算符用于比較兩個變量。所有的比較運(yùn)算符都會返回“True”或“False”。句法:Operand1操作符Operand2
(1) == 為等式運(yùn)算符。如果兩個值相等,則返回True,否則返回False。
- a = 10
- b = 10
- c = 20
- print(a==b)
- print(a==c)
輸出:
- True
- False
(2) !=不等式運(yùn)算符。它的作用與等式運(yùn)算符相反,只有當(dāng)兩個值都不同時,才會返回True。
- a = 10
- b = 10
- c = 20
- print(a!=b)
- print(a!=c)
輸出:
- False
- True
(3) >為大于運(yùn)算符。如果operand1大于operand2,則返回True,否則返回0。
- a = 10
- b = 10
- c = 20
- print(a > b)
- print(c > a)
- print(a > c)
輸出:
- False
- True
- False
(4) < 為小于運(yùn)算符。如果operand1小于operand2,則返回True,否則返回0。
- a = 10
- b = 10
- c = 20
- print(a < b)
- print(c < a)
- print(a < c)
輸出:
- False
- False
- True
(5) >=和<=分別為大于等于和小于等于運(yùn)算符。這些操作符結(jié)合了對>與=的運(yùn)算。如果值1大于或等于第二個值,則第一個返回True。
- a = 10
- b = 10
- c = 20
- print(a >= b)
- print(c >= a)
- print(a >= c)
輸出:
- True
- True
- False
再如
- a = 10
- b = 10
- c = 20
- print(a <= b)
- print(c <= a)
- print(a <= c)
輸出:
- True
- False
- True
4. 邏輯運(yùn)算符
邏輯運(yùn)算符常與條件語句一起使用。python中有三個邏輯運(yùn)算符。它們是and,or以及not。它在兩個布爾值之間使用。
(1) 當(dāng)條件相同,返回到True。真真歸真、真假歸假、假真歸假、假假歸真。
- a = 10
- b = 10
- c = 20
- print(a==b and c>a) #(真,真)
輸出:
- True
(2) 任意值為真,則歸真。真真歸真、真假歸真、假真歸假、假假歸假。
- a = 10
- b = 10
- c = 20
- print(a==b or a>b) #(真,假)
- print(a>bor c<b) #(假,假)
輸出:
- True
- False
(3) 若為相反數(shù),則不返回(句法:不是表達(dá)式)。非真歸假、非假歸真。
八、決策和重復(fù)
做決定是每個人生活中的一項重要技能。在這一部分,我們將教計算機(jī)做決定。
想象一種情形:你正在開車,突然你注意到信號燈里的紅燈亮了?,F(xiàn)在,你要做什么?你要踩剎車。
你正在開車,在這個操作過程中,只有看到紅燈時才會停車。這就是決策制定。在Python中,決策控制語句可以實現(xiàn)精準(zhǔn)目標(biāo)。決策控制語句如下所示:
- if
- if……else
- if……elif……else
(1) if條件語句
條件語句會檢查條件。如果條件返回True,則執(zhí)行語句中的內(nèi)容,否則什么也不做。
句法:if條件:
規(guī)定:設(shè)真或假。這是if條件下的兩種狀態(tài)。我們學(xué)習(xí)了各種運(yùn)算符和表達(dá)式。在傳遞表達(dá)式之后,if條件將返回到True或False。如果返回的值為真,則執(zhí)行該條件下的語句。
例:設(shè)a =10, b= 20。if a
- a = 10
- b = 5
- if a>b:
- print("if conditionsatisfied")
- print("Hello")
輸出:
- if condition satisfied
- Hello
(2) if……else
在上一個例子中,如果表達(dá)式變?yōu)閕f False:則不執(zhí)行任何操作。else關(guān)鍵字使之成為可能。如果If中的條件為False,則else部分中的語句將被執(zhí)行。
- a = 10
- b = 5
- if a>b:
- print("If is executed")
- else:
(3) if……elif……else
如果你的程序中有多個條件,則使用此類的嵌套條件。
- a = 10
- b = 5
- if a>b:
- print("If is executed")
- else:
在使用:in if、elif和else表達(dá)式之后,語句必須在下一行的4個空格之后給出。這叫做縮進(jìn)。
九、循環(huán)語句
循環(huán)或重復(fù)相同類型的操作在編程中非常重要。這種方法稱為循環(huán)操作。
python中有兩種關(guān)鍵字類型。一個是while,另一個是for。
(2) while:
句法:while表達(dá)式
while塊中的語句將一直執(zhí)行,直到每次表達(dá)式返回True為止。
- a = 5
- while a>0:
- print(a)
- aa = a-1
- print("while loop executed")
輸出:
- 5
- 4
- 3
- 2
- 1
- while loop executed
從表達(dá)式返回的值每時每刻都在變化,在某一時刻a會變成0。設(shè)現(xiàn)在a>o是錯誤的,當(dāng)while循環(huán)變?yōu)镕alse時,執(zhí)行將停止。
(2) for循環(huán)
語句:for 變量 in 序列
python中有許多可用的序列類型。但是現(xiàn)在讓我們用range()關(guān)鍵字創(chuàng)建一個序列。
對于范圍(5)內(nèi)的x:在這個表達(dá)式中,range(5)將創(chuàng)建一個從0到4的序列。每次將連續(xù)的數(shù)字分配給變量x。
- a = 5
- for x in range(a):
- print(a)
- print("for loop executed")
輸出:
- 0
- 1
- 2
- 3
- 4
- for loop executed
十、函數(shù)式編程
我們已經(jīng)領(lǐng)會了Python中print()和input()等函數(shù)。這些函數(shù)是Python內(nèi)置的。在本節(jié)中,我們將看到如何創(chuàng)建自己的函數(shù)。函數(shù)在很多情況下都很有幫助。
同樣地,讓我們以現(xiàn)實世界為例,如果你需要一個蛋糕來慶祝你朋友的生日,而現(xiàn)在只有一天的時間了。你需要一個蛋糕,但你不需要學(xué)習(xí)如何做蛋糕,因為有蛋糕師。所以當(dāng)我們想要某樣?xùn)|西的時候,我們就會找能為我們做這件事的人。
函數(shù)以相同的方式工作,如果你創(chuàng)建了一個函數(shù),那么它將在程序中的任何地方被多次調(diào)用。例如,如果另一個人需要蛋糕,他也可以打電話給同一個面包師。這樣,函數(shù)簡化了代碼的可讀性,并易于調(diào)試。
在Python中,函數(shù)可以用四種不同的方式創(chuàng)建。如下所示:
- 沒有參數(shù)和返回值
- 帶參數(shù)且無返回值
- 帶參數(shù)和返回值
- 不帶參數(shù)和返回值
我講一個小故事來讓大家了解這四種功能。約翰是個住在城里的年輕人,他的朋友打電話給他,請他來看戲,因為他有多余的票,所以他去了劇院。從劇院回來時,他看到了一臺稱重機(jī),他走到那臺機(jī)器前檢查了體重。然后他去了一家餐館,點了吃的,最后他回家了。當(dāng)他回到家,他注意到郵箱里有一封郵件。
當(dāng)然,我知道這不是一個有趣的故事。但是把這個故事中的所有事物想象成一個參數(shù)或返回值,將來它會有用的。
十一、如何創(chuàng)建函數(shù)?
在python中,可以使用def關(guān)鍵字創(chuàng)建函數(shù):def function_name:用于創(chuàng)建函數(shù)。
- def add():
- a=5
- b=7
- print(a+b)
上面的代碼片段是一個函數(shù)定義。這可以在程序中的任何地方調(diào)用。
記住一件事,沒有返回值的函數(shù)將表示為,函數(shù)名();具有返回值的函數(shù)將表示為,變量=函數(shù)名();返回值將存儲在變量中。
類型1:不帶參數(shù)和返回值
故事中的劇場就是這個功能的一個例子。在這種情況下,任何意見都由他提出,他只是看到了一個影像,那不取決于他的存在,所以沒有參數(shù)也沒有返回值。
- def hello():
- print("Hello")
- hello()
hello()函數(shù)不傳遞任何內(nèi)容,也不返回任何內(nèi)容。
輸出:
- Hello
類型2:有參數(shù),沒有返回值
在稱重機(jī)里,他看到了自己的體重。只有他站在機(jī)器上,機(jī)器才會顯示他的重量。這就是在傳遞一個參數(shù)。
- def add(c,d):
- print(c+d)
- add(4,5)
輸出:
- 9
類型3:具有返回值的參數(shù)
以餐館為例,在這件事上,他把自己的錢和需要吃的東西的信息作為參數(shù)。作為回報,他得到了食物。
- def add(c,d):
- return c+d
- ans = add(4,5)
- print(ans)
輸出
- 9
類型4:不帶返回值的參數(shù)
最后,郵箱中的郵件是一個沒有參數(shù)但有返回值的例子。
- def add():
- a=6
- b=4
- return a+b
- ans=add()
- print(ans)
這只是關(guān)于Python的一些基礎(chǔ)知識,你要學(xué)的還有很多。最重要的是,永遠(yuǎn)記住一開始教給你的一件事:不要出于任何目的學(xué)任何東西。