歡迎加入Linux_Python學習羣html
羣號:478616847python
剛接觸Python的咱們第一個問題確定就是到底什麼是Python?Python能作什麼?爲何Python如今這麼火?linux
來你們看這貨就是Python,在看的觀衆確定要罵了,你就給我看着個?哈哈,沒錯這個就是Python的代言人。git
其實Python有不少優秀的特色:程序員
(1)Python 是一門簡明並強大的面向對象編程的語言、web
(2)簡單易學適合快速開發各類程序shell
(3)Python在WEB開發,軟件開發,科學運算,大數據分析,自動化運維等方面獲得了普遍的應用編程
Python的創始人爲 吉多·範羅蘇姆 1989年的聖誕節期間,他爲了打發時間,決心開發一個新的腳本解釋程序做爲ABC語言的一種集成,vim
這門語言結合了JAVA和Shell的優點特性,而且屬於解釋型語言的它在可移植性、可擴展性、可嵌入性都有獨特的優點。那麼有人要問什麼是解釋型語言?windows
解釋型語言與編譯型語言的區別
編譯型:
優勢:編譯器通常會有預編譯的過程對代碼進行優化,由於編譯只作一次,運行時不須要編譯,因此編譯型語言的程序執行效率高,能夠脫離語言環境獨立運行。
缺點:編譯以後若是須要修改就須要整個模塊從新編譯,編譯的時候根據對應的運行環境生成機器碼,不一樣的操做系統之間移植就好有問題,須要根據運行的操做
系統環境編譯不一樣的可執行文件。
解釋型:
優勢:有良好的平臺兼容性,在任何環境中均可以運行,前提是安裝瞭解釋器(虛擬機)。靈活,修改代碼直接修改便可,無需再次編譯,快速部署無需停機維護
缺點:性能方面不如編譯型語言
Python的種類
Python在熱門語言中的排名:
下面的圖片就是今年Python跟各大熱門語言對比的排名,咱們的Python如今處於第四位,而且同JAVA/C/C++/一塊兒成爲程序員最熱愛的四大語言之一。
總而言之用一句話總結Python,就是學的快,用的多。
下面咱們開始安裝咱們的Python環境,首先咱們去Python官網下載安裝包,官方下載地址https://www.python.org/downloads/ 選擇對應的版本下載便可,安裝很是傻瓜式,
下一步下一步便可,Linux自帶Python2.6,咱們可使用yum 和apt進行安裝其它版本。
(1)配置windows 命令行運行python2.7,和3.5環境
右鍵計算機-選擇管理-選擇高級系統設置-選擇高級-選擇環境變量-選擇系統變量中的Path-選擇編輯,以下圖添加python3.5和2.7的安裝路徑便可,記住分隔符是分號「;」
進入到最後添加版本的安裝目錄中複製python.exe,粘貼,並更更名稱3.5改爲python3.exe,2.7改爲python2.exe,記住更改的是在Path變量中添加到最後Pthon版本的執行文件
結果
(1) 第一句代碼,print("Hello World"),在python3.5環境中輸入print("Hello World")注意中英文字符,此時咱們看到下面返回了Hello World,那麼 print()就是python中的輸出語句
瞭解一下Python內部的執行過程(無需深究):
(2)解釋器
咱們會shell的童鞋都知道在linux中執行shell文件都須要指定解釋器,那麼咱們執行python文件的時候也須要加上解釋器,就跟shell腳本同樣,咱們用vim建立一個hello.py
的文件,給他執行的權限,寫入以下內容,寫入後就能夠像shell同樣執行python文件了。
1 #!/usr/bin/env python
2
3 print "hello,world"
(3)編碼
咱們知道在咱們的計算機中使用的是二進制,因此在Python解釋器加載.py 文件中的代碼時,會對內容進行編碼(默認ascill)ASCII(American Standard Code for InformationInterchange,
美國標準信息交換代碼)是基於拉丁字母的一套電腦編碼系統,主要用於顯示現代英語和其餘西歐語言,其最多隻能用 8 位來表示(一個字節),即:2**8 = 256,因此,ASCII碼最多隻能表示
256 個符號。咱們來看下對應關係表
咱們從這張表中能夠看到,沒有中文,那中國人寫中國字怎麼辦,等中國人們獲得計算機時,已經沒有能夠利用的字節狀態來表示漢字,何況有6000多個經常使用漢字須要保存呢。可是這難不倒
智慧的中國人民,咱們不客 氣地把那些127號以後的奇異符號們直接取消掉, 規定:一個小於127的字符的意義與原來相同,但兩個大於127的字符連在一塊兒時,就表示一個漢字,前面的一
個字節(他稱之爲高字節)從0xA1用到 0xF7,後面一個字節(低字節)從0xA1到0xFE,這樣咱們就能夠組合出大約7000多個簡體漢字了。在這些編碼裏,咱們還把數學符號、羅馬希臘
的 字母、日文的假名們都編進去了,連在 ASCII 裏原本就有的數字、標點、字母都通通從新編了兩個字節長的編碼,這就是常說的"全角"字符,而原來在127號如下的那些就叫"半角"字符
了。 中國人民看到這樣很不錯,因而就把這種漢字方案叫作 "GB2312"。GB2312 是對 ASCII 的中文擴展。
可是中國的漢字太多了,咱們很快就就發現有許多人的人名沒有辦法在這裏打出來,特別是某些很會麻煩別人的國家領導人。因而咱們不得不繼續把 GB2312 沒有用到的碼位找出來老實不
客氣地用上。 後來仍是不夠用,因而乾脆再也不要求低字節必定是127號以後的內碼,只要第一個字節是大於127就固定表示這是一個漢字的開始,無論後面跟的是不 是擴展字符集裏的內
容。結果擴展以後的編碼方案被稱爲 GBK 標準,GBK 包括了 GB2312 的全部內容,同時又增長了近20000個新的漢字(包括繁體字)和符號。
那麼其餘國家也是像中國同樣增長本身國家的編碼這樣弄得很是亂,後來出現了標準組織,將全球的文字都收錄了進去,推出了Ubicode編碼格式,此編碼中規定,全部字符最少用16位表
示,也就是兩個字節,那麼對於使用字母的國家很顯然佔用了更高的空間因此UTF-8推出,它就是對Unicode編碼壓縮和優化,其中規定了 ascii碼中的內容用1個字節保存,歐洲字符用兩
個字節保存,東亞的字符韓文中文一類的用三個字節保存。
因此!在Python3之前咱們要打印中文就須要增長另外一行註釋,以下可是在Python3中不須要加,由於python3默認是Unicode編碼。
1 #!/usr/bin/env python
2 # -*- coding: utf-8 –*-
3
4 print("你好 世界")、
變量
如下關鍵字不能聲明爲變量名
['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']
註釋:單行注視:# 被註釋內容 多行註釋:""" 被註釋內容 """
字符串(str)
什麼是字符串,字符串就是由0個或多個字符組成的有限序列,上面所打印的「Hello World」就是一個字符串,一般以串做爲操做的總體。
單引號,雙引號,和轉義
在通常的時候 ‘Hello,world!’ 和 「Hello,world!」 是沒有什麼區別的,那麼爲何會兩個均可以用呢?是由於在某些狀況下,他們會派上用處
1 >>> "Hellow,world" 2 'Hellow,world' 3 >>> 'Hellow,world' 4 'Hellow,world'
在下面的代碼中,第一段字符串包含了單引號,因此呢總體就不能用單引號包括起來,若是這樣作的話,解釋器就會抱怨(它這麼作也是對的)
>>> "Let's go!" "Let's go!"
>>> 'Ler's go!' SyntaxError: invalid syntax
雖然上面的代碼,用雙引號執行時成功的,可是咱們不必定要這麼來去作,這裏就涉及到轉義(\),這樣作Python就會明白其中一個單引號是一個字符
>>> 'Ler\'s go!'
"Ler's go!"
字符串拼接
在不少的時候咱們都會用到字符串拼接,由於在輸出一句話的時候每每須要調用多個變量的值,那麼拼接的方法也有不少
1 #第一種 2 3 >>> a="Hello" 4 >>> b="World" 5 >>> print(a,b) 6 Hello World 7 8 #第二種 9 >>> a+b 10 'HelloWorld'
注!python中的字符串在C語言中體現爲是一個字符數組,每次建立字符串時候須要在內存中開闢一塊連續的空,而且一旦須要修改字符串的話,就須要再次開闢空間,
萬惡的+號每出現一次就會在內從中從新開闢一塊空間。
咱們能夠發現上面的兩種方法都不方便,由於加入我要輸出一段很長很長的話,中間須要調用變量的時候怎麼辦?別擔憂咱們還有第三種方法,下面就是字符串格式化,格式
化有兩大中方式,第一種不受位置的影響,也就是說.format(two=b,one=a)也是能夠的,可是第二種方法必須按照位置進行排序,並且%s和%d表明着接受不一樣的替換字符類型,
1 >>>a = "Hello" 2 >>>b = "World" 3 4 >>> print("{one},{two}".format(one=a,two=b)) 5 Hello,World 6 7 >>> print("%s,%s,%d"%(a,b,11)) 8 Hello,World,11 9 10 %s 字符串 (採用str()的顯示) 11 12 %r 字符串 (採用repr()的顯示) 13 14 %c 單個字符 15 16 %b 二進制整數 17 18 %d 十進制整數 19 20 %i 十進制整數 21 22 %o 八進制整數 23 24 %x 十六進制整數 25 26 %e 指數 (基底寫爲e) 27 28 %E 指數 (基底寫爲E) 29 30 %f 浮點數 31 32 %F 浮點數,與上相同 33 34 %g 指數(e)或浮點數 (根據顯示長度) 35 36 %G 指數(E)或浮點數 (根據顯示長度)
字符串內置方法
在python中有一句經典的話,一切接對象,舉個例子好比咱們有一個尺子,還有一隻筆,那麼尺子是用來測量東西的,筆是用來寫東西畫東西的,那麼他們都有不一樣的功能,
咱們換句話來講尺子這類東西有量東西的功能,筆這類東西有鞋寫東西的功能,那麼回到python,字符串這類東西也有不少功能:python中把字符串稱之爲str
1 字母處理 2 3 所有大寫:str.upper() 4 所有小寫:str.lower() 5 大小寫互換:str.swapcase() 6 首字母大寫,其他小寫:str.capitalize() 7 首字母大寫:str.title() 8 9 >>> a = "hello" 10 >>> b = "Hello" 11 >>> a.upper() 12 'HELLO' 13 >>> b.lower() 14 'hello' 15 >>> b.swapcase() 16 'hELLO' 17 >>> a.capitalize() 18 'Hello' 19 >>> c = "hello world" 20 >>> c.title() 21 'Hello World' 22 23 格式化相關 24 25 獲取固定長度,右對齊,左邊不夠用空格補齊:str.ljust(width) 26 獲取固定長度,左對齊,右邊不夠用空格補齊:str.rjust(width) 27 獲取固定長度,中間對齊,兩邊不夠用空格補齊:str.center(width) 28 獲取固定長度,右對齊,左邊不足用0補齊str.zfill(width) 29 30 >>> a.ljust(15) 31 'hello ' 32 >>> a.rjust(15) 33 ' hello' 34 >>> a.center(15) 35 ' hello ' 36 37 >>> a.zfill(15) 38 '0000000000hello' 39 40 字符串搜索相關 41 搜索指定字符串,沒有返回-1:str.find('t') 42 指定起始位置搜索:str.find('t',start) 43 指定起始及結束位置搜索:str.find('t',start,end) 44 從右邊開始查找:str.rfind('t') 45 搜索到多少個指定字符串:str.count('t') 46 上面全部方法均可用index代替,不一樣的是使用index查找不到會拋異常,而find返回-1 47 48 字符串替換相關 49 替換old爲new:str.replace('old','new') 50 替換指定次數的old爲new:str.replace('old','new',maxReplaceTimes) 51 52 字符串去空格及去指定字符 53 去兩邊空格:str.strip() 54 去左空格:str.lstrip() 55 去右空格:str.rstrip() 56 去兩邊字符串:str.strip('d'),相應的也有lstrip,rstrip 57 58 字符串判斷相關(這裏涉及到布爾值(也就是條件成立爲真True不成立爲假False)請看下面的內容) 59 是否以start開頭:str.startswith('start') 60 是否以end結尾:str.endswith('end') 61 是否全爲字母或數字:str.isalnum() 62 是否全字母:str.isalpha() 63 是否全數字:str.isdigit() 64 是否全小寫:str.islower() 65 是否全大寫:str.isupper()
其中數字類型的內置方法參考http://www.cnblogs.com/bj-xy/p/5184952.html
數字類型分爲
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也不會致使嚴重後果了。
float(浮點型)
浮點數用來處理實數,即帶有小數的數字。相似於C語言中的double類型,佔8個字節(64位),其中52位表示底,11位表示指數,剩下的一位表示符號。
complex(複數)
複數由實數部分和虛數部分組成,通常形式爲x+yj,其中的x是複數的實數部分,y是複數的虛數部分,這裏的x和y都是實數。
注:Python中存在小數字池:-5 ~ 257
運算
在數字類型中也涉及到數學中的加減乘除等運算,這些運算在平常編程中常常被用到,因此請熟知。
請參考http://www.runoob.com/python/python-operators.html
用戶輸入
在用戶輸入的操做中,python2裏面存在 input和raw_input,然而在python3中就只有input了,下面的例子中可使用type()來輸出你的變量的類型
下面是python2中測試的,能夠看到raw_input輸出的類型是str那麼str就是字符串,input輸出的是int類型那麼就是數字,在python3中的input輸出的
只是字符串,不會像2中那樣分開
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 userin_str = raw_input("請輸入一串字符串:") 5 6 userin_int = input("請輸入一個數字") 7 8 print(type(userin_str)) 9 10 print(type(userin_int))
那麼爲何python3把輸入數字給取消了,其實緣由很簡單,當你在2中使用input輸入字符串的時候就會報錯,那麼在使用中還要對它進行處理,這樣的
操做還不如讓輸入的類型都是str,而後針對str進行操做,是數字的能夠轉換成數字類型,是字符串的那麼就直接使用就行了
什麼是條件語句?熟悉其餘語言的同窗確定很清楚,條件語句就是經過條件來判斷是否執行某些語句模塊
例子:
你去A超市打個醬油
若是A超市關門
你在B超市打醬油
不然
你在A超市打醬油
能夠看到,在上面的例子中,可讓一件事情有兩個執行過程,那麼控制這個過程的有兩個關鍵字 若是,不然!若是後面是條件的判斷,不然則是條件失敗的時候執行的操做
咱們把上面的漢語轉換成python語言中的if語句
if判斷
布爾值
布爾表達式就是判斷真假,也就是True和False,計算機的機器代碼由1和0來表示因此,1表示有也表示真,0表示無也表示假。
1 >>> a = 1 2 >>> a == 3 3 False 4 >>> a == 1 5 True 6 >>> True 7 True 8 >>> False 9 False 10 >>> True == 1 11 True 12 >>> False == 0 13 True
if 語句也就是運用真與假來進行判斷
if
else 子句當條件爲假的時候執行什麼操做
elif 子句當要檢查多個條件的時候使用
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 #if 表示 若是條件成立則輸出正確的輸出 5 userin_str = input("請輸入一個數字:") 6 if "userin_str" == "11": 7 print("恭喜你猜對了") 8 9 #if else 表示 若是條件成立則輸出正確的輸出 不然輸出錯誤的輸出 10 userin_str = input("請輸入一個數字:") 11 if "userin_str" == "11": 12 print("恭喜你猜對了") 13 else: 14 print("很差意思你猜錯了") 15 16 #if elif else 表示 若是條件成立則輸出正確的輸出 或者第二個條件成立則輸出正確輸出 不然輸出錯誤輸出 17 userin_str = input("請輸入一個數字:") 18 if "userin_str" == "1": 19 print("恭喜你猜對了") 20 elif "userin_str" == "2": 21 print("猜到這個數也算你對") 22 else: 23 print("很差意思你猜錯了")
三元運算
result
=
值
1
if
條件
else
值
2
若是條件爲真:result = 值1
若是條件爲假:result = 值2
例子中表示 若是 a>b 則result 等於 a-b 不然等於a+b
1 a = 5 2 b = 6 3 result = a-b if a>b else a+b 4 print(result)
while 循環
若是有一個需求,讓你打印1-100這些數字,按照常理咱們可能就會print(1) print(2) ........ print(100) 小夥伴們或說什麼鬼,單單打印就要100行
固然要真的是這樣那麼也不用學python了,要實現這個需求咱們能夠藉助while循環來作,並結合計數器
1 counter = 0 2 while True: 3 counter +=1 4 print(counter)
上面是一個死循環,那麼它一直會打印,打印,沒法退出,在寫程序中應該避免而且這個顯然不符合咱們的需求,那麼咱們須要讓他打印到100 就退出
1 結合if語句 2 #方法1 3 counter = 0 4 while True: 5 counter +=1 6 print(counter) 7 if counter == 100: 8 break 9 10 #方法2 11 counter = 0 12 judge = True 13 while judge: 14 counter +=1 15 print(counter) 16 if counter == 100: 17 judge = False
在上面代碼中咱們看到了「break」,這個代碼的功能就是退出當前循環,下面有詳細介紹
While循環有兩個條件能夠退出,一就是當匹配某個條件break退出的,二就是當循環條件等於False的時候
for循環
在使用中發現while循環並不能符合一些場景需求,好比我想豎着打印一個字符串,還有上面打印1到100的代碼能不能簡單點
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 5 #分別打印字符串中每個元素 6 for_str = "ABCDEFG" 7 for i in for_str: 8 print("我是字母:%s"%(i)) 9 10 11 #for版本打印1到100,藉助range()功能 12 for i in range(1,101): 13 print(i)
在for循環中有兩種狀況能夠退出循環,一種for循環序列中沒有原始了,另一種就是條件成立後break退出
range()內建函數是生成一個範圍的列表,range(1,101)生成1到100的數字,而且它是經過起始位置1,生成到後面位置減1的數字
縮進
python不一樣於其它語言,其它語言中,每一個語言都有一個大括號或者其它方式來區分哪些代碼屬於這個條件語句的
在python中統一的縮進就表明着屬於一個條件語句,正由於這樣python不須要用括號的方式來區分代碼塊,
在縮進裏面,有人喜歡打四個空格,有人喜歡打tab鍵,聽說這兩種人碰到一塊兒回擦出不同的火花!
在上面咱們接觸到了break語句,在python中還有其它的語句
break:退出當前循環,打破當前層的for或while循環。
continue:跳槽本次循環
pass:不作任何事情,通常用作佔位語句
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 #continue,當i等於C則觸發continue,直接返回下一次for循環,下面print不會執行 5 for_str = "ABCDEFG" 6 for i in for_str: 7 if i == "C": 8 continue 9 print("我是字母:%s"%(i)) 10 11 #pass,當i等於C則觸發pass,print不會執行 12 for i in for_str: 13 if i == "C": 14 pass 15 else: 16 print("我是字母:%s"%(i)) 17 18 #break 當匹配i等於C的時候就會break,退出當前層的循環 19 for i in for_str: 20 if i == "C": 21 break 22 else: 23 print("我是字母:%s"%(i))
做者:北京小遠
出處:http://www.cnblogs.com/bj-xy/ 本文版權歸做者和博客園共有,歡迎轉載,但未經做者贊成必須在文章頁面明顯位置給出原文鏈接,不然保留追究法律責任的權利。