Python介紹、變數、流程控制
PYTHON介紹、變數、流程控制
- 程式設計與程式語言
- 程式語言的介紹
- 主流程式語言介紹
- Python的介紹
- 安裝直譯器
- 第一個Python程式
- 變數
- 常量
- 使用者互動
- 基本資料型別
- 格式化輸出
- 基本運算子
- 流程判斷之if...else
- 流程控制之while迴圈
- 流程控制之for迴圈
一、程式設計與程式語言
意思就是開發者用計算機看得懂的語言去執行命令.....
二、程式語言的介紹
1.機器語言
站在計算機的角度,使用最原始的二進位制編碼進行程式設計(0低電頻,1高電頻)
優點:執行速度快
缺點:開發效率低,需要的知識儲備多,必須瞭解計算機硬體的執行方式
2.組合語言
在機器語言的基礎上對二進位制進行了英文標示符的封裝
優點:相對機器語言開發效率有了提升,對開發者來說更容易看懂
缺點:需要的知識儲備多,必須瞭解計算機硬體的執行方式
3.高階語言
站在開發者的角度,用人能看懂的語言來程式設計
優點:大大提高了開發效率
缺點:執行速度慢,需要編譯成二級制計算機才能執行(但是不重要,網路才是執行速度的瓶頸)
高階語言又分為編譯型和解釋型
編譯型:一次性把原始碼編譯,然後再執行
優點:執行速度快,不依賴語言執行環境
缺點:出錯不好排查,改完程式碼還需重新編譯,跨平臺差
解釋型:類似於同聲傳譯。翻譯一行,執行一行
優點:報錯容易排查,一行程式碼到處用
缺點:執行速度慢,需要語言直譯器
詳細簡介
#機器語言 由於計算機內部只能接受二進位制程式碼,因此,用二進位制程式碼0和1描述的指令稱為機器指令,全部機器指令的集合構成計算機的機器語言,用機器語言程式設計的程式稱為目標程式。只有目標程式才能被計算機直接識別和執行。但是機器語言編寫的程式無明顯特徵,難以記憶,不便閱讀和書寫,且依賴於具體機種,侷限性很大,機器語言屬於低階語言。 用機器語言編寫程式,程式設計人員要首先熟記所用計算機的全部指令程式碼和程式碼的涵義。手程式設計序時,程式設計師得自己處理每條指令和每一資料的儲存分配和輸入輸出,還得記住程式設計過程中每步所使用的工作單元處在何種狀態。這是一件十分繁瑣的工作。編寫程式花費的時間往往是實際執行時間的幾十倍或幾百倍。而且,編出的程式全是些0和1的指令程式碼,直觀性差,還容易出錯。除了計算機生產廠家的專業人員外,絕大多數的程式設計師已經不再去學習機器語言了。 機器語言是微處理器理解和使用的,用於控制它的操作二進位制程式碼。 儘管機器語言好像是很複雜的,然而它是有規律的。 存在著多至100000種機器語言的指令。這意味著不能把這些種類全部列出來。 以下是一些示例: 指令部份的示例 代表 載入(LOAD) 代表 儲存(STORE) ... 暫存器部份的示例 代表暫存器 A 代表暫存器 B ... 儲存器部份的示例 代表地址為 0 的儲存器 代表地址為1 的儲存器 代表地址為 16 的儲存器 代表地址為 2^11 的儲存器 整合示例 0000,0000,000000010000 代表 LOAD A, 16 0000,0001,000000000001 代表 LOAD B, 1 0001,0001,000000010000 代表 STORE B, 16 0001,0001,000000000001 代表 STORE B, 1[1] #組合語言 組合語言的實質和機器語言是相同的,都是直接對硬體操作,只不過指令採用了英文縮寫的識別符號,更容易識別和記憶。它同樣需要程式設計者將每一步具體的操作用命令的形式寫出來。彙編程式的每一句指令只能對應實際操作過程中的一個很細微的動作。例如移動、自增,因此彙編源程式一般比較冗長、複雜、容易出錯,而且使用匯編語言程式設計需要有更多的計算機專業知識,但組合語言的優點也是顯而易見的,用匯編語言所能完成的操作不是一般高階語言所能夠實現的,而且源程式經彙編生成的可執行檔案不僅比較小,而且執行速度很快。 彙編的hello world,列印一句hello world, 需要寫十多行,也是醉了。 ; hello.asm section .data ; 資料段宣告 msg db "Hello, world!", 0xA ; 要輸出的字串 len equ $ - msg ; 字串長度 section .text ; 程式碼段宣告 global _start ; 指定入口函式 _start: ; 在螢幕上顯示一個字串 mov edx, len ; 引數三:字串長度 mov ecx, msg ; 引數二:要顯示的字串 mov ebx, 1 ; 引數一:檔案描述符(stdout) mov eax, 4 ; 系統呼叫號(sys_write) int 0x80 ; 呼叫核心功能 ; 退出程式 mov ebx, 0 ; 引數一:退出程式碼 mov eax, 1 ; 系統呼叫號(sys_exit) int 0x80 ; 呼叫核心功能 #高階語言 高階語言是大多數程式設計者的選擇。和組合語言相比,它不但將許多相關的機器指令合成為單條指令,並且去掉了與具體操作有關但與完成工作無關的細節,例如使用堆疊、暫存器等,這樣就大大簡化了程式中的指令。同時,由於省略了很多細節,程式設計者也就不需要有太多的專業知識。 高階語言主要是相對於組合語言而言,它並不是特指某一種具體的語言,而是包括了很多程式語言,像最簡單的程式語言PASCAL語言也屬於高階語言。 高階語言所編制的程式不能直接被計算機識別,必須經過轉換才能被執行,按轉換方式可將它們分為兩類: 編譯類:編譯是指在應用源程式執行之前,就將程式原始碼“翻譯”成目的碼(機器語言),因此其目標程式可以脫離其語言環境獨立執行(編譯後生成的可執行檔案,是cpu可以理解的2進位制的機器碼組成的),使用比較方便、效率較高。但應用程式一旦需要修改,必須先修改原始碼,再重新編譯生成新的目標檔案(* .obj,也就是OBJ檔案)才能執行,只有目標檔案而沒有原始碼,修改很不方便。 編譯後程序執行時不需要重新翻譯,直接使用編譯的結果就行了。程式執行效率高,依賴編譯器,跨平臺性差些。如C、C++、Delphi等 解釋類:執行方式類似於我們日常生活中的“同聲翻譯”,應用程式原始碼一邊由相應語言的直譯器“翻譯”成目的碼(機器語言),一邊執行,因此效率比較低,而且不能生成可獨立執行的可執行檔案,應用程式不能脫離其直譯器(想執行,必須先裝上直譯器,就像跟老外說話,必須有翻譯在場),但這種方式比較靈活,可以動態地調整、修改應用程式。如Python、Java、PHP、Ruby等語言。 機器語言、組合語言、高階語言詳解
三、主流程式語言介紹
上圖
https://www.tiobe.com/tiobe-index/
#C語言: C語言是一種計算機程式設計語言,它既具有高階語言的特點,又具有組合語言的特點。它由美國貝爾研究所的D.M.Ritchie於1972年推出,1978年後,C語言已先後被移植到大、中、小及微型機上,它可以作為工作系統設計語言,編寫系統應用程式,也可以作為應用程式設計語言,編寫不依賴計算機硬體的應用程式。它的應用範圍廣泛,具備很強的資料處理能力,不僅僅是在軟體開發上,而且各類科研都需要用到C語言,適於編寫系統軟體,三維,二維圖形和動畫,具體應用比如微控制器以及嵌入式系統開發。 #C++: C++是C語言的繼承的擴充套件,它既可以進行C語言的過程化程式設計,又可以進行以抽象資料型別為特點的基於物件的程式設計,還可以進行以繼承和多型為特點的面向物件的程式設計。C++擅長面向物件程式設計的同時,還可以進行基於過程的程式設計,因而C++就適應的問題規模而論,大小由之。 C++不僅擁有計算機高效執行的實用性特徵,同時還致力於提高大規模程式的程式設計質量與程式設計語言的問題描述能力。 #JAVA: Java是一種可以撰寫跨平臺應用軟體的面向物件的程式設計語言,是由Sun Microsystems公司於1995年5月推出的Java程式設計語言和Java平臺(即JavaSE, JavaEE, JavaME)的總稱。Java 技術具有卓越的通用性、高效性、平臺移植性和安全性,廣泛應用於個人PC、資料中心、遊戲控制檯、科學超級計算機、行動電話和網際網路,同時擁有全球最大的開發者專業社群。在全球雲端計算和移動網際網路的產業環境下,Java更具備了顯著優勢和廣闊前景。 #PHP: PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文字前處理器”)是一種通用開源指令碼語言。語法吸收了C語言、Java和Perl的特點,利於學習,使用廣泛,主要適用於Web開發領域 Ruby: Ruby 是開源的,在Web 上免費提供,但需要一個許可證。[4] Ruby 是一種通用的、解釋的程式語言。 Ruby 是一種真正的面向物件程式語言。 Ruby 是一種類似於 Python 和 Perl 的伺服器端指令碼語言。 Ruby 可以用來編寫通用閘道器介面(CGI)指令碼。 Ruby 可以被嵌入到超文字標記語言(HTML)。 Ruby 語法簡單,這使得新的開發人員能夠快速輕鬆地學習 Ruby #GO: Go 是一個開源的程式語言,它能讓構造簡單、可靠且高效的軟體變得容易。 Go是從2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持開發,後來還加入了Ian Lance Taylor, Russ Cox等人,並最終於2009年11月開源,在2012年早些時候釋出了Go 1穩定版本。現在Go的開發已經是完全開放的,並且擁有一個活躍的社群。 由其擅長併發程式設計 #Python: Python是一門優秀的綜合語言, Python的宗旨是簡明、優雅、強大,在人工智慧、雲端計算、金融分析、大資料開發、WEB開發、自動化運維、測試等方向應用廣泛,已是全球第4大最流行的語言。幾個流行的高階語言簡介
四、Python的介紹
Python的創始人為吉多·範羅蘇姆(Guido van Rossum)。1989年的聖誕節期間,Guido開始寫能夠解釋Python語言語法的直譯器。Python這個名字,來自Guido所摯愛的電視劇Monty Python’s Flying Circus。他希望這個新的叫做Python的語言,能符合他的理想:創造一種C和shell之間,功能全面,易學易用,可拓展的語言。
最新的TIOBE排行榜,Python趕超PHP佔據第5, Python崇尚優美、清晰、簡單,是一個優秀並廣泛使用的語言。
Python可以應用於眾多領域,如:資料分析、元件整合、網路服務、影象處理、數值計算和科學計算等眾多領域。目前業內幾乎所有大中型網際網路企業都在使用Python,如:Youtube、Dropbox、BT、Quora(中國知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、騰訊、汽車之家、美團等。
#1. WEB開發——最火的Python web框架Django, 支援非同步高併發的Tornado框架,短小精悍的flask,bottle, Django官方的標語把Django定義為the framework for perfectionist with deadlines(大意是一個為完全主義者開發的高效率web框架) #2. 網路程式設計——支援高併發的Twisted網路框架, py3引入的asyncio使非同步程式設計變的非常簡單 #3. 爬蟲——爬蟲領域,Python幾乎是霸主地位,Scrapy\Request\BeautifuSoap\urllib等,想爬啥就爬啥 #4. 雲端計算——目前最火最知名的雲端計算框架就是OpenStack,Python現在的火,很大一部分就是因為雲端計算 #5. 人工智慧——誰會成為AI 和大資料時代的第一開發語言?這本已是一個不需要爭論的問題。如果說三年前,Matlab、Scala、R、Java 和 Python還各有機會,局面尚且不清楚,那麼三年之後,趨勢已經非常明確了,特別是前兩天 Facebook 開源了 PyTorch 之後,Python 作為 AI 時代頭牌語言的位置基本確立,未來的懸念僅僅是誰能坐穩第二把交椅。 #6. 自動化運維——問問中國的每個運維人員,運維人員必須會的語言是什麼?10個人相信會給你一個相同的答案,它的名字叫Python #7. 金融分析——我個人之前在金融行業,10年的時候,我們公司寫的好多分析程式、高頻交易軟體就是用的Python,到目前,Python是金融分析、量化交易領域裡用的最多的語言 #8. 科學運算—— 你知道麼,97年開始,NASA就在大量使用Python在進行各種複雜的科學運算,隨著NumPy, SciPy, Matplotlib, Enthought librarys等眾多程式庫的開發,使的Python越來越適合於做科學計算、繪製高質量的2D和3D影象。和科學計算領域最流行的商業軟體Matlab相比,Python是一門通用的程式設計語言,比Matlab所採用的指令碼語言的應用範圍更廣泛 #9. 遊戲開發——在網路遊戲開發中Python也有很多應用。相比Lua or C++,Python 比 Lua 有更高階的抽象能力,可以用更少的程式碼描述遊戲業務邏輯,與 Lua 相比,Python 更適合作為一種 Host 語言,即程式的入口點是在 Python 那一端會比較好,然後用 C/C++ 在非常必要的時候寫一些擴充套件。Python 非常適合編寫 1 萬行以上的專案,而且能夠很好地把網遊專案的規模控制在 10 萬行程式碼以內。另外據我所知,知名的遊戲<文明> 就是用Python寫的Python主要應用領域
# 谷歌:Google App Engine 、code.google.com 、Google earth 、谷歌爬蟲、Google廣告等專案都在大量使用Python開發 # CIA: 美國中情局網站就是用Python開發的 # NASA: 美國航天局(NASA)大量使用Python進行資料分析和運算 # YouTube:世界上最大的視訊網站YouTube就是用Python開發的 # Dropbox:美國最大的線上雲端儲存網站,全部用Python實現,每天網站處理10億個檔案的上傳和下載 # Instagram:美國最大的圖片分享社交網站,每天超過3千萬張照片被分享,全部用python開發 # Facebook:大量的基礎庫均通過Python實現的 # Redhat: 世界上最流行的Linux發行版本中的yum包管理工具就是用python開發的 # 豆瓣: 公司幾乎所有的業務均是通過Python開發的 # 知乎: 國內最大的問答社群,通過Python開發(國外Quora) # 春雨醫生:國內知名的線上醫療網站是用Python開發的 # 除上面之外,還有搜狐、金山、騰訊、盛大、網易、百度、阿里、淘寶 、土豆、新浪、果殼等公司都在使用Python完成各種各樣的任務。Python在一些公司的應用
# 1989年,Guido開始寫Python語言的編譯器。 # 1991年,第一個Python編譯器誕生。它是用C語言實現的,並能夠呼叫C語言的庫檔案。從一出生,Python已經具有了:類,函式,異常處理,包含表和詞典在內的核心資料型別,以及模組為基礎的拓展系統。 # Granddaddy of Python web frameworks, Zope 1 was released in 1999 # Python 1.0 - January 1994 增加了 lambda, map, filter and reduce. # Python 2.0 - October 16, 2000,加入了記憶體回收機制,構成了現在Python語言框架的基礎 # Python 2.4 - November 30, 2004, 同年目前最流行的WEB框架Django 誕生 # Python 2.5 - September 19, 2006 # Python 2.6 - October 1, 2008 # Python 2.7 - July 3, 2010 # In November 2014, it was announced that Python 2.7 would be supported until 2020, and reaffirmed that there would be no 2.8 release as users were expected to move to Python 3.4+ as soon as possible # Python 3.0 - December 3, 2008 (這裡要解釋清楚 為什麼08年就出3.0,2010年反而又推出了2.7?是因為3.0不向下相容2.0,導致大家都拒絕升級3.0,無奈官方只能推出2.7過渡版本) # Python 3.1 - June 27, 2009 # Python 3.2 - February 20, 2011 # Python 3.3 - September 29, 2012 # Python 3.4 - March 16, 2014 # Python 3.5 - September 13, 2015 # Python 3.6 - 2016-12-23 釋出python3.6.0版Python(直譯器)的發展史
我們現在知道了Python是一門解釋型語言,程式碼想執行,必須通過直譯器執行,Python的直譯器本身也可以看作是個程式(翻譯官司是哪國人不重要),這個程式是什麼語言開發的呢? 答案是好幾種語言? what? 因為Python有好幾種直譯器,分別基於不同語言開發,每個直譯器特點不同,但都能正常執行我們的Python程式碼,下面分別來看下: #CPython:CPython是使用最廣且被的Python直譯器。本教程以CPython為準。 當我們從Python官方網站下載並安裝好Python 2.7後,我們就直接獲得了一個官方版本的直譯器:CPython。這個直譯器是用C語言開發的,所以叫CPython。在命令列下執行python就是啟動CPython直譯器。 #IPython IPython是基於CPython之上的一個互動式直譯器,也就是說,IPython只是在互動方式上有所增強,但是執行Python程式碼的功能和CPython是完全一樣的。好比很多國產瀏覽器雖然外觀不同,但核心其實都是呼叫了IE。 CPython用>>>作為提示符,而IPython用In [序號]:作為提示符。 #PyPy PyPy是另一個Python直譯器,它的目標是執行速度。PyPy採用JIT技術,對Python程式碼進行動態編譯(注意不是解釋),所以可以顯著提高Python程式碼的執行速度。 絕大部分Python程式碼都可以在PyPy下執行,但是PyPy和CPython有一些是不同的,這就導致相同的Python程式碼在兩種直譯器下執行可能會有不同的結果。如果你的程式碼要放到PyPy下執行,就需要了解PyPy和CPython的不同點。 #Jython Jython是執行在Java平臺上的Python直譯器,可以直接把Python程式碼編譯成Java位元組碼執行。 #IronPython IronPython和Jython類似,只不過IronPython是執行在微軟.Net平臺上的Python直譯器,可以直接把Python程式碼編譯成.Net的位元組碼。Python 有哪些種類?
In summary : Python 2.x is legacy, Python 3.x is the present and future of the language Python 3.0 was released in 2008. The final 2.x version 2.7 release came out in mid-2010, with a statement of extended support for this end-of-life release. The 2.x branch will see no new major releases after that. 3.x is under active development and has already seen over five years of stable releases, including version 3.3 in 2012,+ 3.4 in 2014, and 3.5 in 2015. This means that all recent standard library improvements, for example, are only available by default in Python 3.x. Guido van Rossum (the original creator of the Python language) decided to clean up Python 2.x properly, with less regard for backwards compatibility than is the case for new releases in the 2.x range. The most drastic improvement is the better Unicode support (with all text strings being Unicode by default) as well as saner bytes/Unicode separation. Besides, several aspects of the core language (such as print and exec being statements, integers using floor division) have been adjusted to be easier for newcomers to learn and to be more consistent with the rest of the language, and old cruft has been removed (for example, all classes are now new-style, "range()" returns a memory efficient iterable, not a list as in 2.x). 目前雖然業內很多企業還在大量使用Python2.6 or 2.7,因為舊專案幾十萬甚至上百萬行的程式碼想快速升級到3.0不是件容易的事,但是大家在開發新專案時幾乎都會使用3.x。 另外Python3 確實想比2.x做了很多的改進,直觀點來講,就像從XP升級到Win7的感覺一樣,棒棒的。 Py2 和Py3的具體細節區別我們在以後課程中會慢慢深入。Python 2 or Python 3 ?
五、安裝直譯器
Python目前已支援所有主流作業系統,在Linux,Unix,Mac系統上自帶Python環境,在Windows系統上需要安裝一下,超簡單
開啟官網 https://www.python.org/downloads/windows/ 下載中心
#測試安裝是否成功 windows --> 執行 --> 輸入cmd ,然後回車,彈出cmd程式,輸入python,如果能進入互動環境 ,代表安裝成功。
#多版本共存演示 注意:在安裝目錄下找到python.exe,拷貝一份,命名為python2.exe或python3.exe,一定要保留原版,因為pip工具會呼叫它。
六、第一個Python程式
print('hello world')
七、變數
什麼是變數:
變數即變化的量,核心是“變”與“量”二字,變即變化,量即衡量狀態
如何定義變數:
#變數名(相當於門牌號,指向值所在的空間),等號,變數值
name = ‘lee’
sex = 'male'
age = '24'
變數的定義規範:
1.變數只能是字母、數字或下劃線的任意組合
2.變數名的第一個字元不能使數字
3.關鍵字不能宣告為變數名('and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else','except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield')
定義方式:
1.駝峰體:AgeOfOldBoy = 56
2.下劃線(推薦使用):age_of_old_boy = 56
定義變數名不好的方式
1.變數名為中文
2.變數名過長
3.變數名詞不達意
定義變數會有:id type value
#1 等號比較的是value, #2 is比較的是id #強調: #1. id相同,意味著type和value必定相同 #2. value相同type肯定相同,但id可能不同,如下 >>> x='Info lee:18' >>> y='Info lee:18' >>> id(x) >>> id(y) >>> >>> x == y True >>> x is y False
八、常量
常量即指不變的量,如pai 3.141592653..., 或在程式執行過程中不會改變的量舉例,假如老男孩老師的年齡會變,那這就是個變數,但在一些情況下,他的年齡不會變了,那就是常量。在Python中沒有一個專門的語法代表常量,程式設計師約定俗成用變數名全部大寫代表常量
AGE_OF_OLDBOY = 56
#ps:在c語言中有專門的常量定義語法,const int count = 60;一旦定義為常量,更改即會報錯
九、使用者互動
input('')
在python2中分為input和raw_input
區別:raw_input指使用者輸入任何值,都存成字串型別,等價於python3中的input
python2的input是指使用者輸入什麼型別,程式就存成什麼型別
註釋:單行註釋用#
多行註釋用滑鼠選中要註釋的內容按ctrl+?
檔案頭:
linux下的python指令碼需要加上
#!/usr/bin/env python
# -*- coding: utf-8 -*-
十、基本資料型別
1.整型:age = 10
用於標識:年齡,等級,身份證號,qq號,個數
2.字串:name = ‘lee’
用於標識:描述性的內容,如姓名,性別,國籍,種族
3.浮點型:height = 179.9
用於標識:工資,身高,體重
4.列表:l = [1,2,3,4,5,'lee','hahah']
用於標識:儲存多個值的情況,比如一個人有多個愛好
5.字典:dic = {'lee':'niubi','qew':'qsc'}
用於標識:儲存多個值的情況,每個值都有唯一一個對應的key,可以更為方便高效地取值
6.布林值:True 和 False
用於做判斷
十一、格式化輸出
程式中經常會有這樣場景:要求使用者輸入資訊,然後列印成固定的格式
比如要求使用者輸入使用者名稱和年齡,然後列印如下格式:
My name is xxx,my age is xxx.
很明顯,用逗號進行字串拼接,只能把使用者輸入的名字和年齡放到末尾,無法放到指定的xxx位置,而且數字也必須經過str(數字)的轉換才能與字串進行拼接。
這就用到了佔位符,如:%s、%d
#%s字串佔位符:可以接收字串,也可接收數字 print('My name is %s,my age is %s' %('egon',18)) #%d數字佔位符:只能接收數字 print('My name is %s,my age is %d' %('egon',18)) print('My name is %s,my age is %d' %('egon','18')) #報錯 #接收使用者輸入,列印成指定格式 name=input('your name: ') age=input('your age: ') #使用者輸入18,會存成字串18,無法傳給%d print('My name is %s,my age is %s' %(name,age)) #注意: #print('My name is %s,my age is %d' %(name,age)) #age為字串型別,無法傳給%d,所以會報錯
十二、基本運算子
+
-
*
/
// 整除取整
% 取餘
** 冪
>
<
==
!= 或者 <> 都是不等於
>=
<=
#擴充套件is比較的是id ,不是值,而==比較的是值\
十三、流程判斷之if...else
語法示例:
while True: age = input('輸入年齡:') if not age.isdigit() : print('請輸入數字') continue else: res = int(age) if res > 10: print('大') elif res < 10: print('小') else: print('猜對了') break
十四、流程控制之while迴圈
語法示例:
#列印0-10 count=0 while count <= 10: print('loop',count) count+=1 #列印0-10之間的偶數 count=0 while count <= 10: if count%2 == 0: print('loop',count) count+=1 #列印0-10之間的奇數 count=0 while count <= 10: if count%2 == 1: print('loop',count) count+=1
迴圈巢狀tag
tag=True while tag: ...... while tag: ........ while tag: tag=False
break與continue
#break用於退出本層迴圈 while True: print "123" break print "456" #continue用於退出本次迴圈,繼續下一次迴圈 while True: print "123" continue print "456"
while+else
#與其它語言else 一般只與if 搭配不同,在Python 中還有個while ...else 語句,while 後面的else 作用是指,當while 迴圈正常執行完,中間沒有被break 中止的話,就會執行else後面的語句 count = 0 while count <= 5 : count += 1 print("Loop",count) else: print("迴圈正常執行完啦") print("-----out of while loop ------") 輸出 Loop 1 Loop 2 Loop 3 Loop 4 Loop 5 Loop 6 迴圈正常執行完啦 -----out of while loop ------ #如果執行過程中被break啦,就不會執行else的語句啦 count = 0 while count <= 5 : count += 1 if count == 3:break print("Loop",count) else: print("迴圈正常執行完啦") print("-----out of while loop ------") 輸出 Loop 1 Loop 2 -----out of while loop ------
十五、流程控制之for迴圈
1.迭代式迴圈:for,語法如下
for i in range(10):
縮排的程式碼塊
2.break與continue同上
3.迴圈巢狀
for i in range(1,10): for j in range(1,i+1): print('%s*%s=%s' %(i,j,i*j),end=' ') print()
4.for與else連用
for迴圈正常結束之後會執行else裡面的程式碼,如果迴圈被break掉則不會執行
list3 = [ {"name": "alex", "hobby": "抽菸"}, {"name": "alex", "hobby": "喝酒"}, {"name": "alex", "hobby": "燙頭"}, {"name": "alex", "hobby": "Massage"}, {"name": "wusir", "hobby": "喊麥"}, {"name": "wusir", "hobby": "街舞"}, {"name": "taibai", "hobby": "泡妞"}, {"name": "wxx", "hobby": "拉屎"}, ] ''' list4 = [ {"name": "alex", "hobby_list": ["抽菸", "喝酒", "燙頭", "Massage"]}, {"name": "wusir", "hobby_list": ["喊麥", "街舞"]}, ] ''' dic = {} res_l = [] #res_l = [] for i in list3: # i = {"name": "alex", "hobby": "喝酒"} for k in res_l: # res_l = {'name':i['name'],'hobby_list':[i['hobby']]} if k['name'] == i['name']: k['hobby_list'].append(i['hobby']) break else: res_l.append({'name':i['name'],'hobby_list':[i['hobby']]}) print(res_l)例題