我要偷偷的學Python,然後驚呆所有人(第一天)
前言
本系列文預設各位有一定的C或C++基礎,因為我是學了點C++的皮毛之後入手的Python,這裡也要感謝齊鋒學長送來的支援。
本系列文預設各位會百度,會用線上編譯器,因為我是突擊學Python的,之前的編譯環境都刪了,但是吧,我發現線上編譯是真的爽,浪費那時間去搭那環境幹啥,學好了Python,會差那點請人搭環境的錢嗎?
我要的不多,點個關注就好啦
然後呢,本系列的目錄嘛,說實話我個人比較傾向於那兩本 Primer Plus,所以就跟著它們的目錄結構吧。
本系列也會著重培養各位的自主動手能力,畢竟我不可能把所有知識點都給你講到,所以自己解決需求的能力就尤為重要,所以我在文中埋得坑請不要把它們看成坑,那是我留給你們的鍛鍊機會,請各顯神通,自行解決。
圖片來源:本文黑色圖片來自“風變程式設計”
Python語言概覽
Python語言的起源
老生常談了,但是追本溯源有時候會有它意想不到的好處,全在個人悟性了。
Python的作者,Guido von Rossum,確實是荷蘭人。1982年,Guido從阿姆斯特丹大學(University of Amsterdam)獲得了數學和計算機碩士學位。然而,儘管他算得上是一位 數學家,但他更加 享受計算機帶來的樂趣。用他的話說,儘管擁有數學和計算機雙料資質,他總趨向於做計算機相關的工作,並熱衷於做任何和程式設計相關的活兒。
在那個時候,他接觸並使用過諸如Pascal、C、 Fortran等語言。這些語言的基本設計原則是讓機器能更快執行。所有的編譯器的核心是做最佳化,以便讓程式能夠執行。為了增進效率,語言也迫使程式設計師像計算機一樣思考,以便能寫出更符合機器口味的程式。在那個時代,程式設計師恨不得用手榨取計算機每一寸的能力。
然而,這種思考方式讓Guido感到苦惱。Guido知道如何用C語言寫出一個功能,但整個編寫過程需要耗費大量的時間 。他的另一個選擇是shell。然而,shell的本質是呼叫命令。它並不是一個真正的語言。比如說,shell沒有數值型的資料型別,加法運算都很複雜。總之,shell不能全面的調動計算機的功能。
Guido希望有一種語言,這種語言能夠像C語言那樣,能夠全面呼叫計算機的功能介面,又可以像shell那樣,可以輕鬆的程式設計。
1989年,為了打發聖誕節假期,Guido開始寫Python語言的編譯/直譯器。Python來自Guido所摯愛的電視劇Monty Python’s Flying Circus 。他希望這個新的叫做Python的語言,能實現他的理念(
一種C和shell之間,功能全面,易學易用,可擴充的語言)。Guido作為一個語言設計愛好者,已經有過設計語言的(不很成功)的嘗試。這一次,也不過是一次純粹的hacking行為。
1991年,第一個Python編譯器(同時也是直譯器)誕生。 它是用C語言實現的, 並能夠呼叫C庫(.so檔案)。從一出生, Python已經具有了:類(class),函式(function),異常處理(exception),包括表(list)和詞典(dictionary)在內的核心資料型別,以及模組(module)為基礎的擴充系統。
資料型別
Number資料型別
int 整型 (正整形 0 負整型)
float 浮點型即小數
bool 布林型 (True 真 False假)
插一個
complex 複數型別(這個我寫程式碼兩年多,也是沒用過了)
容器資料型別
str 字串型
至於其他跳脫字元,這裡不多贅述
元字串
‘’‘元字串可以讓跳脫字元失效’’’
字串的格式化
“%d %f %s” 語法 : “字串” % (實際值)
%d 佔位符 d代表整型資料,%nd表示佔n個位置
結果:XXX買了3個充氣娃娃
%f 佔位符 f代表浮點型資料 預設保留6位小數點,f前面有數值,則根據數值是多少保留對應小數點
結果:今天大白菜2.35元一斤
結果:今天大白菜2.3元一斤
%s 佔位符 代表字串
list 列表型([])
‘’‘特徵:可以獲取和修改資料,排列有序’’’
列表的修改
tuple 元組型 ( () )
‘’‘特徵:可以獲取但不能修改資料,排列有序’’’
獲取元組中的資料 : 跟列表list的取值一模一樣 (正向下標,反向下標)
set 集合型 ({})
setvar = {} 資料型別顯示是一個dict 字典
特徵:不可獲取,也不可以修改,無序排列,自動去掉重複資料
dict 字典 ( {“aaa”:“bbb”,})
冒號左邊是鍵,右邊是值,鍵值對之間用逗號隔開
補充
獲取資料型別的函式:type()
獲取變數地址的函式:id()
四則運算
不過,對於這麼多的算術運算子,我建議你先看一遍,有個大致的印象就行。你可以先把這張圖儲存上,等用的時候再找出來,對應著查閱就可以。
我們們再說說一樣的——運算優先順序:Python世界的運算優先順序,和我們平時的計算優先順序是一樣的。
字串拼接
Python有一個很優秀的點我很喜歡,那就是它的字串拼接。
曾經有人說,程式設計,說到底就是對字串的操作,我覺得他說的很有道理,別看那些花裡胡哨的,說到底都是操作字串。
反正C/C++裡的字串操作已經讓我喝好幾壺了,還沒喝夠。
Python裡面字串拼接的方法可簡單了,就是利用字串拼接符號【+】,將需要拼接的變數連在一起就行了。
但是,既然是字串拼接,那它的限制其實就很明顯了,你得拿字串來拼接。
那如果我要拿去拼的東西參差不齊呢?怎麼辦?別急
強制型別轉換
負責轉換資料型別的函式一共有3種:str()、 int()和float()。
str()
str()函式能將資料轉換成其字串型別,不管這個資料是int型別還是float型別,只要放到括號裡。這個資料就能搖身一變,成為字串型別。
是不是挺簡單的?我們只需透過str(number)一個步驟,便可以將整數型別的【153】轉化為字串型別的【153】,成功完成資料拼接。
int()
將資料轉換為整數型別的方法也很簡單,就是int()函式。其使用方法同str()一樣,將你需要轉換的內容放在括號裡就行,像這樣:int(轉換的內容)。
不過對於int()函式的使用,大家要注意一點:只有符合整數規範的字串類資料,才能被int()強制轉換。
別看它雖然只有一句話,但它其實帶有三層含義:
雖然浮點形式的字串,不能使用int()函式。但浮點數是可以被int()函式強制轉換的(去尾法)
float()
那麼,經過之前str()和int()操練,float()函式是不是好懂了一些?
總結一下
標準輸入輸出
好滴吧,可能有的人會犯嘀咕,為什麼不講輸入輸出。莫急嘛
print()函式
之所以現在才說輸入輸出,是因為這裡面實在可以包含太多東西了,不要被上面的這幾個例子所迷惑,print可以列印各種資料型別,參考本文前面出現的print()以及後面將會出現的print()
input()函式
首先,讓我們透過一段程式碼,來看一看input()函式是如何使用的:
input()函式是輸入函式。就上面例子來講,它需要你輸入針對括號內’請在以下四個選項【格蘭芬多;斯萊特林;拉文克勞;赫奇帕奇】中,輸入你想去的學院名字:'的答案。
所以,當你在函式的括號內寫出問題時,input()函式會將此問題原樣顯示在螢幕上,並在終端區域等待你針對此問題的回答。
可是,我們為什麼要在終端處輸入回答呢?不輸入行不行?
事實上,我們可以把input()函式當作一扇連結現實世界與程式碼世界的門。
當問題從程式碼世界傳遞給我們,可我們卻沒有回答時,這扇等待輸入的input()大門,就會一直處於敞開狀態,一直等著你往裡送回答。
注意點
對於input()函式來說,不管我們輸入的回答是什麼,不管你輸入的是整數1234,還是字串『隱形斗篷是我最想擁有的魔法』,input()函式的輸入值(蒐集到的回答),永遠會被【強制性】地轉換為【字串】型別。
這時候就要對輸入的資料進行強制型別轉換了:
choice = int(input('請輸入您的選擇:'))
控制語句
條件控制語句
if判斷
在這裡,你可能注意到了一個細節:在條件判斷程式碼中的冒號:後、下一行內容的前面,會空幾個格,但這是為什麼呢?
首先,在計算機的溝通語言中,空格的學名叫縮排,比如我們寫文章都要空兩個格,這就叫首行縮排。
icon
對於Python而言,冒號和縮排是一種語法。它會幫助Python區分程式碼之間的層次,理解條件執行的邏輯及先後順序。【注:縮排是四個空格】這裡建議不要用tab,就四個空格的事情嘛,年輕人那麼懶幹嘛,養成習慣之後很多地方受限制。
if···else···
很多時候,我們不能把雞蛋放在一個籃子裡,要做好兩手準備:如果不滿足條件時,我們要怎麼辦。
Python則很貼心地,讓我們借用if…else…語句,讓碼農們有了另一種選擇——【如果…不滿足,就…】
在if…else條件語句中,if和else各自抱團,形成兩個不同的程式碼塊。表示的是條件和其他條件的互斥關係——如果不滿足if條件,就執行else其他條件。
if···elif···else
在判斷3個或3個以上的條件時,我們就需要藉助Python中的多向判斷命令:if…elif…else…。
當判斷的條件超過3個時,中間的多個條件都可以使用elif。
elif後可不接else
if巢狀
像這種如果底下還有如果(即條件裡還套條件)的情況,我們如何用Python把上面的規則寫出來,並得出評價呢?
答案就是——巢狀條件。
for···in···迴圈
Python for迴圈可以遍歷任何序列的專案,如一個列表或者一個字串。
for迴圈的語法格式如下:
可以看出,模板中的
iterating_var
是不用提前賦值的。
range()函式
使用range(a,b) 函式,你可以生成了一個【取頭不取尾】的整數序列。
例如:
結果:13、14、15、16
、
range()函式還有一種用法,我們來直接體驗一下:
這是一種切片方式,第三個引數被稱作“步長”,即間隔多少取一個數。
那麼這個程式碼執行的結果就是:0、3、6、9
迴圈使用 else 語句
在 python 中,for … else 表示這樣的意思,for 中的語句和普通的沒有區別,else 中的語句會在迴圈正常執行完(即 for 不是透過 break 跳出而中斷的)的情況下執行,while … else 也是一樣。
while迴圈 changchun/
while迴圈和for迴圈差不多,不過這裡的計數變數要初始化:
慄:
很明顯,while迴圈有2個要點:1.放行條件;2.辦事流程。
和for迴圈一樣,冒號和內部程式碼的縮排都是必不可少的。
其他
break
我們先來看看break語句。break的意思是“打破”,是用來結束迴圈的,一般寫作if…break。它的寫法長這樣:
在這裡,if…break的意思是如果滿足了某一個條件,就提前結束迴圈。記住,這個只能在迴圈內部使用。
continue
continue的意思是“繼續”。這個子句也是在迴圈內部使用的。當某個條件被滿足的時候,觸發continue語句,將跳過之後的程式碼,直接回到迴圈的開始。
pass
pass語句就非常簡單了,它的英文意思是“跳過”。
對比兩種迴圈 hebei/
for迴圈和while迴圈最大的區別在於【迴圈的工作量是否確定】,for迴圈就像空房間依次辦理業務,直到把【所有工作做完】才下班。但while迴圈就像哨卡放行,【滿足條件就一直工作】,直到不滿足條件就關閉哨卡
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30239065/viewspace-2742423/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 我要偷偷的學Python,然後驚呆所有人(第四天)Python
- 我要偷偷的學Python,然後驚呆所有人(第三天)Python
- 我要偷偷的學Python,然後驚呆所有人(第七天)Python
- 你要偷偷學會排查線上CPU飆高的問題,然後驚豔所有人!
- 黑客:你要悄悄變富,然後驚豔所有人……黑客
- 中國果粉要告蘋果:適用法律驚呆蘋果
- 微軟表示Win10 RedStone(紅石)版要加入讓你“驚呆”的功能微軟Win10
- 被鄰居偷偷拉了條網線到他家,然後在他裝潢WiFi,我怎麼讓他不能使用我的網路?WiFi
- 我在偷偷學Python的第十八天(匿名函式)Python函式
- 良心乾貨!如何驚呆你的面試官面試
- 程式媛上班第一天,盡然讓我做這個?!
- 手把手:我的深度學習模型訓練好了,然後要做啥?深度學習模型
- (驚呆)java反序列化漏洞—被低估的破壞之王Java
- Python學習的第一天Python
- 一位朋友來我們司面試,然後。。面試
- 傳聞:誰控制了前端入口,誰就是IT行業的主宰!看完驚呆前端行業
- 6種動態報表的應用和製作,偷偷學會,年底驚豔領導和同事
- 認真學習python的第一天Python
- 地產大佬潘石屹:人生苦短,我要學PythonPython
- 如果我是小白,學Python要準備什麼呢?Python
- 小白學python第一天打卡Python
- 我是怎樣克服對 React 的恐懼,然後愛上 React 的React
- 用 python 偷偷給班級群女同學的顏值進行排名Python
- 我用 Python 找出了刪除我微信的所有人並將他們自動化刪除了Python
- 攤牌了,作為開發者,我經常用這14個 Github 偷偷學習Github
- 學Python好久都學不會?然後選擇放棄,總結出這幾個原因Python
- 試試哈然後
- 人生苦短,要學Python!Python
- 震驚!我勸你別盲目跟風學Python!網友:求求別在刷屏了...Python
- 再次前往python學習之路第一天Python
- CSS: 試試,然後做的更好CSS
- 為什麼我要學習“機器學習”?機器學習
- 我為什麼要學技術
- 防呆設計/防呆處理
- 我在圖靈的第一天圖靈
- 我的部落格園第一天
- 呆瓜呆呆的專欄stream學習連結
- 我想立刻辭職,然後閉關學習程式語言,我給自己3個月時間學習C語言!這樣行的通嗎...C語言