answer:編程是個動詞,編程就等於寫代碼,那麼寫代碼是爲了什麼呢?也就是爲何要編程呢,確定是爲了讓計算機幫咱們搞事情,代碼就是計算機能理解的語言。html
例子:你是公司老闆,你有一個員工是中國人,你讓他幹活,就得說中文,還有一個員工是美國人,讓他幹活,就得說英文,你還有一條狗,讓他聽話,你就得汪汪汪。。。,那如今你有臺電腦,讓它幹活,就得用它能理解的語言。java
高級語言 A + B
彙編語言 ADD AX BX
機器語言 0000 0001 1 0000python
機器語言:因爲計算機內部只能接受二進制代碼,所以,用二進制代碼0和1描述的指令稱爲機器指令,所有機器指令的集合構成計算機的機器語言,機器語言屬於低級語言。c++
彙編語言:其實質和機器語言是相同的,都是直接對硬件操做,只不過指令採起了英文縮寫的標識符,更容易識別和記憶。程序員
高級語言:是大多數編程人員的選擇,和彙編語言相比,他不但將許多相關的機器指令合成爲單條指令,而且去掉了與具體操做相關但與完成工做無關的細節,高級語言主要是相對於彙編語言而言,它並非特指某一種具體的語言,而是包含了許多編程語言。如C/C++,JAVA,PHP,PYTHON等都屬於高級語言。web
機器語言:優勢是最底層,速度快,缺點是複雜,開發效率低面試
彙編語言:優勢是比較底層,速度快,缺點是複雜,開發效率低算法
高級語言:編譯型語言執行速度快,不依賴語言環境運行,跨平臺差shell
解釋型跨平臺比較好,一份代碼,處處使用,缺點是執行效率慢,依賴解釋器運行編程
相比於機器和彙編語言,高級語言對開發人員更友好,在開發效率上大大提升。
機器語言效率是彙編的1.5倍,
彙編語言的效率是C語言的2倍,
Java語言效率是C語言的1/5
機器語言 100 導彈控制程序
彙編語言 150
C語言 300
C++ 400
Java 1200
第一代 第二代 第三代 第四代 第五代
機器語言 彙編語言 c語言 ObjectC語言 Java、PHP、Python
C/C++語言 C#、Lua、R、Ruby
VB
#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大最流行的語言。
幾個主流的編程語言介紹
高級語言所編制的程序不能被計算機所知別,必須講過轉換才能被執行,按照轉換方式,能夠將其分爲兩類,一類是編譯類,一類是解釋類
編譯類:就是在應用源碼程序執行以前,就將程序源代碼「翻譯」成目標代碼(機器語言),所以其目標程序能夠脫離其語言環境獨立執行。使用比較方便,效率也高,可是應用程序一旦須要修改,必須先修改源代碼,再從新編譯生成新的目標(*.obj ,也就是OBJ文件)才能執行,只有目標文件而沒有源代碼,修改很不方便。
特色:編譯後程序運行時不須要從新翻譯,直接使用編譯的結果就好了。程序執行效率高,依賴編譯器,跨平臺性比較差,如C,C++,Delphi等
優勢:1,執行程序時候,不須要源代碼,不依賴語言環境,由於執行的是機器源文件。
2,執行速度快,由於程序代碼已經翻譯成計算機能夠理解的機器語言。
缺點:1,每次修改了源代碼,須要從新編譯,生成機器編碼文件
2,跨平臺性很差,不一樣操做系統,調用底層的機器指令不一樣,須要爲不一樣的平臺生成不一樣的機器碼文件。
解釋類:執行方式相似於咱們生活中的「同聲翻譯」,應用程序源代碼一邊由相應語言的解釋器「翻譯」成目標代碼(機器語言),一邊執行,一邊翻譯,所以效率比較低。
特色:效率低,不能生成獨立的可執行文件,應用程序不能脫離其解釋器,可是這種方式比較靈活,能夠動態的調整,修改應用程序。如Python,Java,PHP,Ruby等語言。
優勢:1,用戶調用解釋器,執行源碼文件,並且能夠隨時修改,當即見效,改完源代碼,直接運行看結果
2,解釋器把源碼文件一邊解釋成機器指令,一邊交給CPU執行,天生跨平臺,由於解釋器已經作好了對不一樣平臺的交互處理,用戶寫的源代碼不須要考慮平臺差別性。
缺點:1,代碼是明文(沒法加密)....python自己開源的,因此代碼加密性並不重要
2,運行效率低,全部的代碼是須要解釋器邊解釋邊執行,速度比編譯型慢不少。
Python能夠應用於衆多領域,如:數據分析、組件集成、網絡服務、圖像處理、數值計算和科學計算等衆多領域。目前業內幾乎全部大中型互聯網企業都在使用Python,如:Youtube、Dropbox、BT、Quora(中國知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、騰訊、汽車之家、美團等。
目前Python主要應用領域:
Python在一些公司的應用:
python發展史
編程語言主要從如下幾個角度爲進行分類,編譯型和解釋型、靜態語言和動態語言、強類型定義語言和弱類型定義語言,每一個分類表明什麼意思呢,咱們一塊兒來看一下。
2.1 編譯型與解釋型。
編譯器是把源程序的每一條語句都編譯成機器語言,並保存成二進制文件,這樣運行時計算機能夠直接以機器語言來運行此程序,速度很快;
而解釋器則是隻在執行程序時,才一條一條的解釋成機器語言給計算機來執行,因此運行速度是不如編譯後的程序運行的快的.
這是由於計算機不能直接認識並執行咱們寫的語句,它只能認識機器語言(是二進制的形式)
編譯型
優勢:編譯器通常會有預編譯的過程對代碼進行優化。由於編譯只作一次,運行時不須要編譯,因此編譯型語言的程序執行效率高。能夠脫離語言環境獨立運行。
缺點:編譯以後若是須要修改就須要整個模塊從新編譯。編譯的時候根據對應的運行環境生成機器碼,不一樣的操做系統之間移植就會有問題,須要根據運行的操做系統環境編譯不一樣的可執行文件。
解釋型
優勢:有良好的平臺兼容性,在任何環境中均可以運行,前提是安裝瞭解釋器(虛擬機)。靈活,修改代碼的時候直接修改就能夠,能夠快速部署,不用停機維護。
缺點:每次運行的時候都要解釋一遍,性能上不如編譯型語言。
2.2動態語言和靜態語言
一般咱們所說的動態語言、靜態語言是指動態類型語言和靜態類型語言。
(1)動態類型語言:動態類型語言是指在運行期間纔去作數據類型檢查的語言,也就是說,在用動態類型的語言編程時,永遠也不用給任何變量指定數據類型,該語言會在你第一次賦值給變量時,在內部將數據類型記錄下來。Python和Ruby就是一種典型的動態類型語言,其餘的各類腳本語言如VBScript也多少屬於動態類型語言。
(2)靜態類型語言:靜態類型語言與動態類型語言恰好相反,它的數據類型是在編譯其間檢查的,也就是說在寫程序時要聲明全部變量的數據類型,C/C++是靜態類型語言的典型表明,其餘的靜態類型語言還有C#、JAVA等。
2.3強類型定義語言和弱類型定義語言
(1)強類型定義語言:強制數據類型定義的語言。也就是說,一旦一個變量被指定了某個數據類型,若是不通過強制轉換,那麼它就永遠是這個數據類型了。舉個例子:若是你定義了一個整型變量a,那麼程序根本不可能將a看成字符串類型處理。強類型定義語言是類型安全的語言。
(2)弱類型定義語言:數據類型能夠被忽略的語言。它與強類型定義語言相反, 一個變量能夠賦不一樣數據類型的值。
強類型定義語言在速度上可能略遜色於弱類型定義語言,可是強類型定義語言帶來的嚴謹性可以有效的避免許多錯誤。另外,「這門語言是否是動態語言」與「這門語言是否類型安全」之間是徹底沒有聯繫的!
例如:Python是動態語言,是強類型定義語言(類型安全的語言); VBScript是動態語言,是弱類型定義語言(類型不安全的語言); JAVA是靜態語言,是強類型定義語言(類型安全的語言)。
經過上面這些介紹,咱們能夠得出,python是一門動態解釋性的強類型定義語言。(面試會問)
先看優勢
再看缺點:
當咱們編寫Python代碼時,咱們獲得的是一個包含Python代碼的以.py
爲擴展名的文本文件。要運行代碼,就須要Python解釋器去執行.py
文件。
因爲整個Python語言從規範到解釋器都是開源的,因此理論上,只要水平夠高,任何人均可以編寫Python解釋器來執行Python代碼(固然難度很大)。事實上,確實存在多種Python解釋器。
CPython
當咱們從Python官方網站下載並安裝好Python 3.6後,咱們就直接得到了一個官方版本的解釋器:CPython。這個解釋器是用C語言開發的,因此叫CPython。在命令行下運行python
就是啓動CPython解釋器。
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的解釋器不少,但使用最普遍的仍是CPython。若是要和Java或.Net平臺交互,最好的辦法不是用Jython或IronPython,而是經過網絡調用來交互,確保各程序之間的獨立性。
官網:https://www.python.org/downloads/
下載:Windows x86-64 executable installer
# 注意添加環境變量
1,交互器執行,在控制檯上運行臨時輸入的代碼
2,文件操做,執行一個保存好的py文件
二者的區別是:一個是內存操做,一個是硬盤操做,
內存的特色是:讀取速度快,可是斷電就丟失數據
硬盤的特色是:速度慢,但能夠保存數據
上一步中執行 python d:t1.py 時,明確的指出 t1.py 腳本由 python 解釋器來執行。
若是想要相似於執行shell腳本同樣執行python腳本,例: ./t1.py
,那麼就須要在 hello.py 文件的頭部指定解釋器,以下:
# !/usr/bin/env python3 print("Hello World!")
ASCII(American Standard Code for Information Interchange,美國標準信息交換代碼)是基於拉丁字母的一套電腦編碼系統,主要用於顯示現代英語和其餘西歐語言,其最多隻能用 8 位來表示(一個字節),即:2**8 = 256,因此,ASCII碼最多隻能表示 256 個符號。
而美國人留了一位做爲拓展,因此是7位...然而遠遠不夠中國人使用(9萬多個漢字) gbk國人使用的編碼
顯然ASCII碼沒法將世界上的各類文字和符號所有表示,因此,就須要新出一種能夠表明全部字符和符號的編碼,即:Unicode
Unicode(統一碼、萬國碼、單一碼)是一種在計算機上使用的字符編碼。Unicode 是爲了解決傳統的字符編碼方案的侷限而產生的,它爲每種語言中的每一個字符設定了統一而且惟一的二進制編碼,規定雖有的字符和符號最少由 16 位來表示(2個字節),即:2 **16 = 65536,
注:此處說的的是最少2個字節,可能更多
UTF-8,是對Unicode編碼的壓縮和優化,他再也不使用最少使用2個字節,而是將全部的字符和符號進行分類:ascii碼中的內容用1個字節保存、歐洲的字符用2個字節保存,東亞的字符用3個字節保存...
因此,python解釋器在加載 .py 文件中的代碼時,會對內容進行編碼(默認ascill),若是是以下代碼的話:
報錯:ascii碼沒法表示中文
Python2 顯示中文時須要加上:# -*- coding: utf-8 -*-
當行註釋:# 被註釋內容
多行註釋:'''被註釋內容''',或者"""被註釋內容"""
變量是什麼? 變量:把程序運行的中間結果臨時的存在內存裏,以便後續的代碼調用。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
name = "taibai"
上述代碼聲明瞭一個變量,變量名爲: name,變量name的值爲:"taibai"
變量的做用:暱稱,其代指內存裏某個地址中保存的內容
5.二、變量定義的規則:
5.三、推薦定義方式
1 #駝峯體 2 3 AgeOfOldboy = 56 4 5 NumberOfStudents = 80 6 7 #下劃線 8 9 age_of_oldboy = 56 10 11 number_of_students = 80
5.四、定義變量很差的方式舉例
常量即指不變的量,如pai 3.141592653..., 或在程序運行過程當中不會改變的量
舉例,假如一我的的年齡會變,那這就是個變量,但在一些狀況下,他的年齡不會變了,那就是常量。在Python中沒有一個專門的語法表明常量,程序員約定俗成用變量名所有大寫表明常量
AGE_OF_OLDBOY = 56
在c語言中有專門的常量定義語法,const int count = 60;
一旦定義爲常量,更改即會報錯
const int count = 60;
#!/usr/bin/env python
# -*- coding: utf-8 -*-
name = input("What is your name?")
age = input("How old are you?") hometown = input("Where is your hometown?") print("Hello ",name , "your are ", age , "years old, you came from",hometown)
什麼是數據類型?
咱們人類能夠很容易的分清數字與字符的區別,可是計算機並不能呀,計算機雖然很強大,但從某種角度上看又很傻,除非你明確的告訴它,1是數字,「漢」是文字,不然它是分不清1和‘漢’的區別的,所以,在每一個編程語言裏都會有一個叫數據類型的東東,其實就是對經常使用的各類數據類型進行了明確的劃分,你想讓計算機進行數值運算,你就傳數字給它,你想讓他處理文字,就傳字符串類型給他。Python中經常使用的數據類型有多種,今天咱們暫只講3種, 數字、字符串、布爾類型
8.一、整數類型(int)。
int(整型)
在32位機器上,整數的位數爲32位,取值範圍爲-2**31~2**31-1,即-2147483648~2147483647
在64位系統上,整數的位數爲64位,取值範圍爲-2**63~2**63-1,即-9223372036854775808~9223372036854775807
long(長整型)
跟C語言不一樣,Python的長整數沒有指定位寬,即:Python沒有限制長整數數值的大小,但實際上因爲機器內存有限,咱們使用的長整數數值不可能無限大。
注意,自從Python2.2起,若是整數發生溢出,Python會自動將整數數據轉換爲長整數,因此現在在長整數數據後面不加字母L也不會致使嚴重後果了。
>>> a= 2**64
>>> type(a) #type()是查看數據類型的方法
<type 'long'>
>>> b = 2**60
>>> type(b)
<type 'int'>
8.二、字符串類型(str)。
在Python中,加了引號的字符都被認爲是字符串!
>>> name = "Li wei" #雙引號 >>> age = "22" #只要加引號就是字符串 >>> age2 = 22 #int >>> >>> msg = '''My name is Alex, I am 22 years old!''' #我擦,3個引號也能夠 >>> >>> hometown = 'ShanDong' #單引號也能夠
那單引號、雙引號、多引號有什麼區別呢? 讓我大聲告訴你,單雙引號木有任何區別,只有下面這種狀況 你須要考慮單雙的配合
msg = "My name is Alex , I'm 22 years old!"
多引號什麼做用呢?做用就是多行字符串必須用多引號
msg = ''' 今天我想寫首小詩, 歌頌個人同桌, 你看他那烏黑的短髮, 好像一隻炸毛雞。 ''' print(msg)
字符串拼接
數字能夠進行加減乘除等運算,字符串呢?讓我大聲告訴你,也能?what ?是的,但只能進行"相加"和"相乘"運算
>>> name
'Alex Li'
>>> age '22' >>> >>> name + age #相加其實就是簡單拼接 'Alex Li22' >>> >>> name * 10 #相乘其實就是複製本身多少次,再拼接在一塊兒 'Alex LiAlex LiAlex LiAlex LiAlex LiAlex LiAlex LiAlex LiAlex LiAlex Li'
注意,字符串的拼接只能是雙方都是字符串,不能跟數字或其它類型拼接
>>> type(name),type(age2)
(<type 'str'>, <type 'int'>) >>> >>> name 'Alex Li' >>> age2 >>> name + age2 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: cannot concatenate 'str' and 'int' objects #錯誤提示數字 和 字符 不能拼接
8.三、布爾值(True,False)。
布爾類型很簡單,就兩個值 ,一個True(真),一個False(假), 主要用記邏輯判斷
但其實大家並不明白對麼? let me explain, 我如今有2個值 , a=3, b=5 , 我說a>b你說成立麼? 咱們固然知道不成立,但問題是計算機怎麼去描述這成不成立呢?或者說a< b是成立,計算機怎麼描述這是成立呢?
沒錯,答案就是,用布爾類型
>>> a=3
>>> b=5
>>>
>>> a > b #不成立就是False,即假
False
>>>
>>> a < b #成立就是True, 即真
True
你怎麼實現呢?你會發現,用字符拼接的方式還難實現這種格式的輸出,因此一塊兒來學一下新姿式
只須要把要打印的格式先準備好, 因爲裏面的 一些信息是須要用戶輸入的,你沒辦法預設知道,所以能夠先放置個佔位符,再把字符串裏的佔位符與外部的變量作個映射關係就好啦
name = input("Name:")
age = input("Age:") job = input("Job:") hobbie = input("Hobbie:") info = ''' ------------ info of %s ----------- #這裏的每一個%s就是一個佔位符,本行的表明 後面拓號裏的 name Name : %s #表明 name Age : %s #表明 age job : %s #表明 job Hobbie: %s #表明 hobbie ------------- end ----------------- ''' %(name,name,age,job,hobbie) # 這行的 % 號就是 把前面的字符串 與拓號 後面的 變量 關聯起來 print(info)
說%d須要一個數字,而不是str, what? 咱們明明輸入的是數字呀,22,22呀。
不用擔憂 ,不要相信你的眼睛咱們調試一下,看看輸入的究竟是不是數字呢?怎麼看呢?查看數據類型的方法是什麼來着?type()
name = input("Name:") age = input("Age:") print(type(age))
執行輸出是
Name:Alex Age:22 <class 'str'> #怎麼會是str Job:IT
讓我大聲告訴你,input接收的全部輸入默認都是字符串格式!
要想程序不出錯,那怎麼辦呢?簡單,你能夠把str轉成int
age = int( input("Age:") ) print(type(age))
確定沒問題了。相反,能不能把字符串轉成數字呢?必然能夠,str( yourStr )
運算符
計算機能夠進行的運算有不少種,可不僅加減乘除這麼簡單,運算按種類可分爲算數運算、比較運算、邏輯運算、賦值運算、成員運算、身份運算、位運算,今天咱們暫只學習算數運算、比較運算、邏輯運算、賦值運算
算數運算
如下假設變量:a=10,b=20
比較運算
賦值運算
邏輯運算
針對邏輯運算的進一步研究:
1,在沒有()的狀況下not 優先級高於 and,and優先級高於or,即優先級關係爲( )>not>and>or,同一優先級從左往右計算。
例題:
判斷下列邏輯語句的True,False。
1,3>4 or 4<3 and 1==1 2,1 < 2 and 3 < 4 or 1>2 3,2 > 1 and 3 < 4 or 4 > 5 and 2 < 1 4,1 > 2 and 3 < 4 or 4 > 5 and 2 > 1 or 9 < 8 5,1 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6 6,not 2 > 1 and 3 < 4 or 4 > 5 and 2 > 1 and 9 > 8 or 7 < 6
2 , x or y , x爲真,值就是x,x爲假,值是y;
x and y, x爲真,值是y,x爲假,值是x。
例題:求出下列邏輯語句的值。
8 or 4
0 and 3 0 or 4 and 3 or 7 or 9 and 6
in,not in :
判斷子元素是否在原字符串(字典,列表,集合)中:
例如:
#print('喜歡' in 'dkfljadklf喜歡hfjdkas') #print('a' in 'bcvd') #print('y' not in 'ofkjdslaf')
假如把寫程序比作走路,那咱們到如今爲止,一直走的都是直路,還沒遇到過度叉口,想象現實中,你遇到了分叉口,而後你決定往哪拐必然是有所動機的。你要判斷那條岔路是你真正要走的路,若是咱們想讓程序也能處理這樣的判斷怎麼辦? 很簡單,只須要在程序裏預設一些條件判斷語句,知足哪一個條件,就走哪條岔路。這個過程就叫流程控制。
if...else 語句
單分支
if 條件: 知足條件後要執行的代碼
雙分支
"""
if 條件:
知足條件執行代碼
else:
if條件不知足就走這段
"""
AgeOfOldboy = 48
if AgeOfOldboy > 50 : print("Too old, time to retire..") else: print("還能折騰幾年!")
縮進
這裏必需要插入這個縮進的知識點
你會發現,上面的if代碼裏,每一個條件的下一行都縮進了4個空格,這是爲何呢?這就是Python的一大特點,強制縮進,目的是爲了讓程序知道,每段代碼依賴哪一個條件,若是不經過縮進來區分,程序怎麼會知道,當你的條件成立後,去執行哪些代碼呢?
在其它的語言裏,大多經過{}
來肯定代碼塊,好比C,C++,Java,Javascript都是這樣,看一個JavaScript代碼的例子
var age = 56
if ( age < 50){
console.log("還能折騰") console.log('能夠執行多行代碼') }else{ console.log('太老了') }
在有{}
來區分代碼塊的狀況下,縮進的做用就只剩下讓代碼變的整潔了。
Python是門超級簡潔的語言,發明者定是以爲用{}
太醜了,因此索性直接不用它,那怎麼能區分代碼塊呢?答案就是強制縮進。
Python的縮進有如下幾個原則:
多分支
回到流程控制上來,if...else ...能夠有多個分支條件
if 條件:
知足條件執行代碼
elif 條件: 上面的條件不知足就走這個 elif 條件: 上面的條件不知足就走這個 elif 條件: 上面的條件不知足就走這個 else: 上面全部的條件不知足就走這段
寫個猜年齡的遊戲吧
age_of_oldboy = 48
guess = int(input(">>:")) if guess > age_of_oldboy : print("猜的太大了,往小裏試試...") elif guess < age_of_oldboy : print("猜的過小了,往大里試試...") else: print("恭喜你,猜對了...")
上面的例子,根據你輸入的值不一樣,會最多獲得3種不一樣的結果
再來個匹配成績的小程序吧,成績有ABCDE5個等級,與分數的對應關係以下
A 90-100 B 80-89 C 60-79 D 40-59 E 0-39
要求用戶輸入0-100的數字後,你能正確打印他的對應成績
score = int(input("輸入分數:"))
if score > 100: print("我擦,最高分才100...") elif score >= 90: print("A") elif score >= 80: print("B") elif score >= 60: print("C") elif score >= 40: print("D") else: print("太笨了...E")
這裏有個問題,就是當我輸入95的時候 ,它打印的結果是A,可是95 明明也大於第二個條件elif score >=80:
呀, 爲何不打印B呢?這是由於代碼是從上到下依次判斷,只要知足一個,就不會再往下走啦,這一點必定要清楚呀!
12.1,基本循環
while
條件:
# 循環體
# 若是條件爲真,那麼循環體則執行
# 若是條件爲假,那麼循環體不執行
12.2,循環停止語句
若是在循環的過程當中,由於某些緣由,你不想繼續循環了,怎麼把它停止掉呢?這就用到break 或 continue 語句
例子:break
count = 0
while count <= 100 : #只要count<=100就不斷執行下面的代碼
print("loop ", count) if count == 5: break count +=1 #每執行一次,就把count+1,要否則就變成死循環啦,由於count一直是0 print("-----out of while loop ------")
輸出
loop 0
loop 1 loop 2 loop 3 loop 4 loop 5 -----out of while loop ------
例子:continue
count = 0
while count <= 100 : count += 1 if count > 5 and count < 95: #只要count在6-94之間,就不走下面的print語句,直接進入下一次loop continue print("loop ", count) print("-----out of while loop ------")
輸出
loop 1
loop 2
loop 3
loop 4
loop 5
loop 95
loop 96
loop 97
loop 98
loop 99
loop 100
loop 101
-----out of while loop ------
12.3,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 ------