目錄:
html
python的創始人爲吉多·範羅蘇姆(Guido van Rossum)。1989年的聖誕節期間,吉多·範羅蘇姆爲了在阿姆斯特丹打發時間,決心開發一個新的腳本解釋程序,做爲ABC語言的一種繼承。java
python的目前應用領域:數據分析、組件集成、網絡服務、圖像處理、數值計算和科學計算等衆多領域python
python的目前公司經常使用領域:自動化運維、自動化測試、大數據分析、爬蟲、Web 等。linux
使用python的公司:Youtube、Dropbox、BT、Quora(中國知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、騰訊、汽車之家、美團等git
ps:有上可知,python正愈來愈受到程序員們的普遍承認,那python的優點在哪裏呢?程序員
一、python和其餘語言對比:windows
a.C 和 Python、GO、Java、C#等網絡
C語言: 代碼編譯獲得 機器碼 ,機器碼在處理器上直接執行,每一條指令控制CPU工做app
其餘語言: 代碼編譯獲得 字節碼 ,虛擬機執行字節碼並轉換成機器碼再後在處理器上執行運維
b.Python 和 C Python這門語言是由C開發而來
對於使用:Python的類庫齊全而且使用簡潔,若是要實現一樣的功能,Python 10行代碼能夠解決,C可能就須要100行甚至更多.
對於速度:Python的運行速度相較與C,絕逼是慢了
c.python和GO語言
對於使用:Go語言是將來的語言,它屬於編譯型(有關解釋型語言和編譯型語言解釋,注1)語言,做爲新型的語言,網絡傳輸方面目前全部語言第一,就是語法基礎等方面還有待於完善。
對於速度: 與C至關,很牛逼的語言,身爲小白的我,坐等它的成熟。
d.Python 和 Java、C#等
對於使用:Linux原裝Python,其餘語言沒有;以上幾門語言都有很是豐富的類庫支持
對於速度:Python在速度上可能稍顯遜色
ps.因此,Python和其餘語言沒有什麼本質區別,其餘區別在於:擅長某領域、人才豐富、先入爲主。
二、python的種類:
a.CPython:
Python的官方版本,使用C語言實現,使用最爲普遍,CPython實現會將源文件(py文件)轉換成字節碼文件(pyc文件),而後運行在Python虛擬機上。目前咱們建議使用3.5版本。
解釋器:CPython。爲C語言開發
運行方式:命令行下使用python命令直接運行。
b.pypy:
Python實現的Python,pypy採用JIT技術,將Python的字節碼字節碼再編譯成機器碼。其目的就是一次編譯全部py變爲pyc,直接調用加快程序調用速度。
解釋器:pypy。
運行方式:命令行下使用pypy命令運行
c.其餘Python:
Jython是運行在java平臺上的python解釋器,能夠直接把python代碼編譯成java字節碼執行。
ps.因此目前python對於全部主流語言都有很好的兼容,雖然如此,若是要和java或.net等平臺交互,最好的方式仍是經過網絡調用交互,以此確保各各程序之間的獨立性。
ps.PyPy,在Python的基礎上對Python的字節碼進一步處理,從而提高執行速度!
前面說了這麼多,下面開始正式學習python了。
一、安裝:
a.windows安裝
1 1、下載安裝包 2 https://www.python.org/downloads/ 3 2、安裝 4 默認安裝路徑:C:\python27 5 3、配置環境變量 6 【右鍵計算機】--》【屬性】--》【高級系統設置】--》【高級】--》【環境變量】--》【在第二個內容框中找到 變量名爲Path 的一行,雙擊】 --> 【Python安裝目錄追加到變值值中,用 ; 分割】 7 如:原來的值;C:\python27,切記前面有分號
b.linux安裝
1 查看默認Python版本 2 python -V 3 4 1、安裝gcc,用於編譯Python源碼 5 yum install gcc 6 二、下載源碼包,https://www.python.org/ftp/python/ 7 3、解壓並進入源碼文件 8 4、編譯安裝 9 ./configure 10 make all 11 make install 12 5、查看版本 13 /usr/local/bin/python2.7 -V 14 6、修改默認Python版本 15 mv /usr/bin/python /usr/bin/python2.6 16 ln -s /usr/local/bin/python2.7 /usr/bin/python 17 7、防止yum執行異常,修改yum使用的Python版本 18 vi /usr/bin/yum 19 將頭部 #!/usr/bin/python 修改成 #!/usr/bin/python2.6
二、Hello world!程序
a.建立helloworld.py文件(pyhton程序,通常爲.py結尾)
#!/usr/bin/env python #解釋器調用路徑 # -*- coding:utf-8 -*- #聲明解釋器編碼 # Author:Shu Yang Wang #程序執行 print('hello world!')
b.執行方式
ps.文件頭部要加#!/user/bin/evn python及chmod +x helloword.py
而後./helloword.py實行。
三、編碼格式(做用:聲明編碼格式)
可讓計算機直接認識的語言,其實只有彙編語言,即0和1的代碼。且計算機是美國人發明的,所以,最先只有英文加特殊字符共127位字母與0和1代碼進行一一對應。而美國人以爲夠用了2^7 = 128不夠他們擴展的,因此採用2^8 =256的內存空間(單位爲‘字節’, 即256字節),夠美國人用的了。
這就是最先的編碼ASCII碼。顯然,256位字符不夠中文用的,中國人也想用,怎麼辦呢?顯然聰明的中國人想到了辦法,經過在作一張新的表並把新表經過取ASCII碼的幾位映射到ASCII碼中使用。這就是GBK。有21003字符,2字節一個漢字。
全世界人民都想使用電腦,因而個個國家的編碼應運而生,日本shift_JTS,韓國EUC-kr等等。中國身爲共產主義多民族國家,不能只搞漢語啊,體現民族平等嘛,因而把滿文,迴文等等的文字也寫了新的編碼GB2312.有27484字,2字節一個漢字
國際標準組織一看,世界竟然爲了編碼亂搞,衝突不斷,亂碼叢生。所以unicode誕生了,把全部語言統一到一個字符編碼中,unicode也所以被稱爲萬國碼。最少用2個字節表示1個字符。
這時,美國不幹了,爲何我創建的計算機,被大家亂改一通,最後我一個字符搞定的事,被大家改爲了2個字符,我原本存100MB的東西,莫名其妙變成了200MB。不行,因而utf-8誕生了,utf-8是對uniccode的優化壓縮。英文字符佔1個字符,歐洲字符佔2個字符,中文佔3個字符……, 故utf-8又稱可變字符編碼。
ps.字符編碼總結:
編碼名 | 佔用字節(1中文字符) | python版本(默認) |
ASCII | 沒有中文 | python2 |
GBK | 2個字節 | 無 |
unciode | 3個字節 | 無 |
utf-8 | 3個字節 | python3 |
ps.二進制換算:
一、使用:
a、建立項目:file ---> new project
b、新建文件夾:右擊要建立文件夾的項目或上級目錄 ----〉new ---〉directory
c、新建文件:右擊要建立文件夾的項目或上級目錄 ----〉new ---〉file
d、運行文件:要執行的.py文件內容---〉右擊---〉run xx.py
二、文件編碼:
file ---->default settings --->editor --->file encodings
三、程序文件模版:
file ---->default settings --->editor --->file and code templates
四、改變字體大小:
file ----〉settings ----〉editor ---> General ---〉mouse
ps.pycharm的更多應用請訪問:
http://www.cnblogs.com/wangshuyang/articles/5846563.html
一、python文件註釋:
# 單行註釋
''' '''' 多行註釋
二、.pyc文件:
.pyc文件存儲的是介於0101計算機語言和咱們寫的文件之間的語言。是有python解釋器根據咱們編寫的代碼自動生成的文件。具體可查看, 注1
一、變量命名規則:
a.字母
b.數字(不能開頭)
c.下劃線
ps.硬性規定,命名必須是字母,數字,下劃線,且不能以數字開頭。
軟性規則,如下劃線分割
二、實例:
a.寫法: age_of_oldboy = 60
b.命名潛規則:age_of_oldboy 普通變量
Age_of_oldboy 首字母大寫,通常爲類
AGE_OF_OLDBOY 通常爲常量寫法
ps.小白作大拿今後開始,一步一步走
一、輸入
v = input('>>>')
import getpass
v = input('>>>')
二、輸出
print('input', v)
3、實例:
1 ''' 2 輸入,輸出 3 ''' 4 5 #輸入終端隱藏,pycharm很差使 6 import getpass 7 8 #正常輸入,顯示 9 name = input('name:') 10 password = getpass.getpass('password:') 11 age = 18 12 13 #正常輸出 14 print(name, password, age)
一、if...else...結構
a.含義:
if 條件:
條件成功,執行
else:
條件失敗,執行
b.實例:
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # Author:Shu Yang Wang 4 5 ''' 6 if...else... 7 ''' 8 #輸入終端隱藏,pycharm很差使 9 import getpass 10 11 #正常輸入,顯示 12 user_name = input('user_name:') 13 password = getpass.getpass('password:') 14 age = 18 15 16 #if ... else ... (若是... 不然...) 17 if user_name == 'wangshuyang' and password == '123': 18 #正常輸出 19 print(user_name, password, age) 20 else: 21 print('密碼不對!')
二、if ...elif ... else ...結構
a.含義:
if 條件:
if條件成功,執行
elif 條件:
elif條件成功,執行
elif 條件:
elif條件成功,執行
....
else:
上述條件都失敗,執行
b.實例:
1 username = input('>>>') 2 if username == 'shuyang': 3 print('普通管理') 4 elif username == 'a': 5 print('超級管理') 6 elif username == 'b': 7 print('人') 8 elif username == 'c': 9 print('裝逼犯') 10 else: 11 print('再見...') 12 13 print('end')
三、實例:
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # Author:Shu Yang Wang 4 5 6 ''' 7 if...elif...else... 及嵌套 8 ''' 9 10 user_type = input('請輸入用戶類型:') 11 if user_type == 'admin': 12 user_name = input('用戶名:') 13 #if ... elif ... else ... 若是... 若是... 不然... 14 if user_name == 'wangshuyang': 15 print('歡迎光臨! %s' % user_name) 16 elif user_name == 'lipingzong': 17 print('歡迎光臨! %s' % user_name) 18 else: 19 print('沒有該人') 20 else: 21 print('類型錯誤')
一、while循環
a.結構
while 條件:
continue #當即執行下一個循環
break #跳出當前while的全部循環
else: #while條件不成立執行
b.實例1:1,2,3,4,5,6, 8, 9, 10 打印
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # Author:Shu Yang Wang 4 5 ''' 6 while 循環 7 ''' 8 9 #1,2,3,4,5,6, 8, 9, 10 打印 10 11 i = 1 12 while True: 13 if i == 7: 14 i += 1 # i = i + 1 15 continue #不往下執行,當即執行下次循環 16 print(i) 17 i += 1 18 if i == 11: 19 break #跳出本次循環 20 21 ''' 22 方法二: 23 i = 1 24 while i < 11: 25 if i == 7: 26 i += 1 27 continue 28 print(i) 29 '''
c.實例2:while 計算1到100的和
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # Author:Shu Yang Wang 4 5 ''' 6 while 計算1到100的和 7 ''' 8 9 value = 0 10 i = 1 11 while i < 101: 12 value += i # value = vlaue + i 13 i += 1 # i = i + 1 14 15 print(value)
d.實例3:求1-2+3-4+5 ... 99的全部數的和
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # Author:Shu Yang Wang 4 5 ''' 6 while 求1.. 100奇數 、 偶數 7 ''' 8 ''' 9 #求奇數 10 i = 1 11 while i < 101: 12 if i%2 == 1: 13 print(i) 14 i += 1 15 16 17 #求偶數 18 i = 1 19 while i < 101: 20 if i%2 == 0: 21 print(i) 22 i += 1 23 ''' 24 25 #1-2+3-4+5…… 99 26 27 value = 0 28 i = 1 29 while i < 100: 30 if i % 2 == 1: 31 value += i 32 else: 33 value -= i 34 i += 1 35 print(value)
e.實例4:用戶登錄(三次機會重試)
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # Author:Shu Yang Wang 4 5 ''' 6 用戶密碼輸入錯誤>3次退出 7 ''' 8 i = 0 9 while i < 3: 10 username = input('username:') 11 password = input('password:') 12 if username == 'shuyang' and password == '123': 13 print('%s登錄成功!!' % username) 14 break 15 else: 16 print('%s登錄失敗!!還有%s機會' % (username, 2 - i)) 17 i += 1 18 #while循環,條件失敗,執行 19 else: 20 print('3次登錄失敗!!!退出')
二、for循環
a.結構:
for 條件:
continue #當即執行下一個循環
break #跳出當前while的全部循環
else: #while條件不成立執行
b.實例:猜數字
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # Author:Shu Yang Wang 4 5 ''' 6 for猜數字 7 ''' 8 9 guess_num = 19 10 #range(開始,結束,步長) range(0,3)== 0,1,2, 11 for i in range(0,3): 12 guess_num_inp = input('猜數字>>>') 13 #.isdigit()輸入是不是一個數字 14 if guess_num_inp.isdigit(): 15 if 'guess_num_inp' == guess_num: 16 print('猜對了!!!!') 17 else: 18 print('猜的不對!!!') 19 else: 20 print('請輸入數字!!!!') 21 else: 22 print('沒有機會了')
ps.while和for的區別,for更加傾向處理list,dict循環,while更加傾向於業務邏輯?
一、算術運算符:
二、比較運算:
三、賦值運算:
四、邏輯運算:
五、成員運算:
六、身份運算:
七、位運算:
1 a = 60 # 60 = 0011 1100 2 b = 13 # 13 = 0000 1101 3 c = 0 4 5 c = a & b; # 12 = 0000 1100 6 print "Line 1 - Value of c is ", c 7 8 c = a | b; # 61 = 0011 1101 9 print "Line 2 - Value of c is ", c 10 11 c = a ^ b; # 49 = 0011 0001 #相同爲0,不一樣爲1 12 print "Line 3 - Value of c is ", c 13 14 c = ~a; # -61 = 1100 0011 15 print "Line 4 - Value of c is ", c 16 17 c = a << 2; # 240 = 1111 0000 18 print "Line 5 - Value of c is ", c 19 20 c = a >> 2; # 15 = 0000 1111 21 print "Line 6 - Value of c is ", c
ps. 補充要點:
a. i += 1 等同於 i = i + 1。同理*= -= 等賦值運算符都爲該系列。
b. 邏輯運算,從左往右一個一個看,先算()內的數值。
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # Author:Shu Yang Wang 4 5 ''' 6 邏輯運算 7 ''' 8 9 #1正確 10 if 1 == 1 or 1 > 2 and 1 == 4: 11 print('正確') 12 else: 13 print('錯誤') 14 15 #2錯誤 16 if 1 == 1 and 1 > 2 or 1 == 4: 17 print('正確') 18 else: 19 print('錯誤') 20 21 #3錯誤 22 if 1 == 0 and 1 > 2 or 1 == 4: 23 print('正確') 24 else: 25 print('錯誤') 26 27 #4錯誤 28 if 1 == 0 and (1 < 2 or 1 == 4): 29 print('正確') 30 else: 31 print('錯誤') 32 33 #5錯誤 34 if 1 == 0 and 1 > 2 or 1 == 4: 35 print('正確') 36 else: 37 print('錯誤')
c.成員運算
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # Author:Shu Yang Wang 4 5 ''' 6 成員運算符 7 ''' 8 content = "Alex 前幾天去泰國玩姑娘,一不當心染上了病,他的心裏活動是,真該多來幾個" 9 10 if "前幾天去" in content: 11 print('包含敏感字符') 12 else: 13 print(content)
type()查看變量類型。
一、int(整形)
a.建立
b.轉換
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # Author:Shu Yang Wang 4 5 ''' 6 int(整形) 7 a.建立 8 b.轉換 9 ''' 10 11 #建立 12 age = 19 13 age1 = int(19) 14 print(age,age1) 15 16 #轉換 17 age2 = '19' 18 print(type(age2)) 19 #isdigit()判斷是不是一個數字,int()只能轉數字,不能轉字母、中文等。會報錯 20 if age2.isdigit(age2): 21 int(age2) 22 print(('tpye:%s age2:%d') % (type(age2), age2))
二、bool(布爾值)
a.建立
b.轉換
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # Author:Shu Yang Wang 4 5 ''' 6 bool(布爾值) 7 a.建立 8 b.轉換 9 ''' 10 11 #建立 12 a = True 13 b = False 14 15 #轉換 16 #數字轉換,只有0是False,其餘True 17 #字符串, 只有""是False,其餘True 18 #其餘,待續…… 19 a1 = 0 20 a2 = 100 21 a3 = -100 22 a1_bool = bool(a1) 23 a2_bool = bool(a2) 24 a3_bool = bool(a3) 25 print('a1 %s:%s bool_type:%s'%(a1,a1_bool, type(a1_bool))) 26 print('a2 %s:%s bool_type:%s'%(a2,a2_bool, type(a1_bool))) 27 print('a3 %s:%s bool_type:%s'%(a3,a2_bool, type(a1_bool))) 28 29 30 b1 = '' 31 b2 = 'fafa' 32 b3 = 'AFSD@' 33 b1_bool = bool(b1) 34 b2_bool = bool(b2) 35 b3_bool = bool(b3) 36 print('b1 %s:%s bool_type:%s'%(b1,b1_bool, type(a1_bool))) 37 print('b2 %s:%s bool_type:%s'%(b2,b2_bool, type(a1_bool))) 38 print('b3 %s:%s bool_type:%s'%(b3,b3_bool, type(a1_bool))) 39 40 ''' 41 結果: 42 a1 0:False bool_type:<class 'bool'> 43 a2 100:True bool_type:<class 'bool'> 44 a3 -100:True bool_type:<class 'bool'> 45 b1 :False bool_type:<class 'bool'> 46 b2 fafa:True bool_type:<class 'bool'> 47 b3 AFSD@:True bool_type:<class 'bool'> 48 '''
三、str(字符串)
a.建立
b.轉換
c.拼接
d.格式化
e.是否在子序列中
f.移除空白.strip()
g.分割.split('分割符',步長)
h.長度len()
i.索引[]
j.切片[開始:結束:步長]
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # Author:Shu Yang Wang 4 5 ''' 6 str(字符串) 7 a.建立 b.轉換 c.拼接 d.格式化 e.是否在子序列中 f.移除空白 8 g.分割 h.長度 i.索引 j.切片 9 ''' 10 11 #建立 12 name = 'shuyang' 13 name1 = str('shuyang') 14 print('name: %s tpye:%s \n name1:%s tpye:%s\n' %(name,type(name),name1,type(name1))) 15 16 #轉換 17 age = 19 18 age_str = str(age) 19 print('age_str:%s tpye:%s' % (age, age_str)) 20 21 #字符串拼接 22 name2 = 'alex' 23 gender = '女' 24 new_str = name2 + gender 25 print(new_str) 26 27 #字符串格式化,使用佔位符%s(待續...) 28 name3 = '我叫李傑,性別:%s,我今年%s歲,我在說謊!' 29 new_str2 = name3 %('男',19,) 30 print(new_str2) 31 name4 = '我叫李傑,性別:%s,我今年%s歲,我在說謊!' %('男',19) 32 print(name4) 33 34 #判斷子序列是否在其中 35 content = "Alex 前幾天去泰國玩姑娘,一不當心染上了病,他的心裏活動是,真該多來幾個" 36 if "前幾天去" in content: 37 print('包含敏感字符') 38 else: 39 print(content) 40 41 #移除空白 42 val = " alex " 43 print(val) 44 new_val = val.strip() # 左右去 45 # new_val = val.lstrip()# 左邊去 46 # new_val = val.rstrip() # 右邊去 47 print(new_val) 48 49 #分割.split('分隔符',步長) 50 user_info = "alex|sb123|9" 51 v = user_info.split('|') 52 # v = user_info.split('|',1) 53 # v = user_info.rsplit('|',1) #右分割 54 # v = user_info.lsplit('|',1) #左分割 55 print(v) 56 57 #長度(字符)python2,中文按2字節算,python按,中文按1字符算 58 val = "李傑nb" 59 v = len(val) 60 print(v) 61 62 ''' 63 結果: 64 4 65 ''' 66 67 #索引 68 val = "李傑mb" 69 v = val[0] 70 print(v) 71 72 val = input('>>>') 73 i = 0 74 while i < len(val): 75 print(val[i]) 76 i += 1 77 78 ''' 79 輸入:dd 80 結果: 81 d 82 d 83 ''' 84 #切片 85 name = '我叫李傑,性別我今年歲,我在說謊!' 86 print(name[0]) 87 print(name[0:2]) 88 print(name[3:9]) 89 print(name[7:]) 90 print(name[4:-2]) 91 print(name[-2:]) 92 93 ''' 94 結果: 95 我 96 我叫 97 傑,性別我今 98 我今年歲,我在說謊! 99 ,性別我今年歲,我在說 100 謊! 101 '''
四、list(列表)
a.建立
b.in判斷
c.索引[]
d.追加.append()
e.插入.insert()
f.刪除del .remove()
g.更新
h.輸出
i.長度len()
j.切片[開始:結束:步長]
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # Author:Shu Yang Wang 4 5 ''' 6 list(列表) 7 a.建立 b.in判斷 c.索引 d.追加 e.插入 f.刪除 g.更新 h.輸出 i.長度 8 j.切片 9 ''' 10 11 #建立 12 a = ['shuyang','牛','jack', 23423] 13 a1 = list(['shuyang','牛','jack', 23423]) 14 print('list_a: %s list_a1: %s'% (a, a1)) 15 16 #in判斷 17 if 'sh' in a: 18 print('在列表中有改元素') 19 else: 20 print('不在列表中有改元素') 21 if 'sh' in a[0]: 22 print('在列表元素[0]中存在') 23 24 #索引 25 print('list_a: %s list_a1: %s'% (a, a1)) 26 val = a[0] 27 print('a[0]:%s', val) 28 29 #追加 30 print('list_a: %s list_a1: %s'% (a, a1)) 31 a.append('xxoo') 32 print('list_a: %s' % a) 33 34 #插入 35 print('list_a: %s list_a1: %s'% (a, a1)) 36 a1.insert(0,'車') 37 print('list_a1_insert_0: %s'% a1) 38 39 #刪除 40 print('list_a: %s list_a1: %s'% (a, a1)) 41 a.remove('jack') 42 del a[0] 43 print('list_a_remove_jack_and_0: %s'% a) 44 45 #更新 46 print('list_a: %s list_a1: %s'% (a, a1)) 47 a1[1] = '發發' 48 print('list_a1_update_1: %s' % a1) 49 50 #輸出 51 print('list_a: %s list_a1: %s'% (a, a1)) 52 for item in a: 53 print('a元素: %s ' %item) 54 55 #長度 56 print('list_a: %s list_a1: %s'% (a, a1)) 57 val1 = len(a) 58 print('list_len_a:%s' % val1) 59 60 #切片 61 print('list_a: %s list_a1: %s'% (a, a1)) 62 v = a1[0::2] #[開始:結束:步長] 63 print('a1_[0::2]: %s' % (v))
五、dict(字典)
a.建立
b.索引
c.增長&更新
d.刪除
e.輸出
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # Author:Shu Yang Wang 4 5 ''' 6 dict(字典) 7 a.建立 b.索引 c.增長&更新 d.刪除 8 e.輸出 9 ''' 10 11 #建立 12 a = {'name':'shuyang', 'password':'123123'} 13 print('a_dict: %s' % a) 14 15 #索引 16 n = a['name'] 17 print('n_name: %s' % n) 18 19 #增長&更新 20 #無key值時爲增長,有key值時爲更新 21 a['age'] = 19 22 a['name'] = 'jack' 23 print('a_dict_add_update: %s' % a) 24 25 #刪除 26 del a['name'] 27 print('del_name_a_dict: %s' % a) 28 29 #輸出 30 print('a_dict: %s' % a) 31 for item in a: 32 print(item) 33 # break 34 # continue
ps.list & dict嵌套
a.實例1:相互嵌套
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # Author:Shu Yang Wang 4 5 ''' 6 dict&list相互嵌套實例1 7 ''' 8 9 user_dict = { 10 'k1': 'v1', 11 'k2':{'kk1':'vv1', 'kk2':'vv2'}, 12 'k3':123, 13 'k4':['shuyang', 'jack', ['a', 'b', 'c'], '李傑',{'k1':'v1'}] 14 } 15 print('dict: %s' % user_dict) 16 17 #添加dict --〉 list的元素 18 user_dict['k4'][2].append('123') 19 print('add_dict_list: %s' % user_dict) 20 21 #添加dict ---〉 dict的元素 22 user_dict['k4'][4]['k2'] = 'v1' 23 print('add_dict_dict: %s' % user_dict)
b.實例2:多用戶密碼登錄
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # Author:Shu Yang Wang 4 5 ''' 6 dict_list多用戶登錄 7 ''' 8 9 user_list = [ 10 {'name':'alex','pwd':'123123','times':1}, 11 {'name':'eric','pwd':'123123','times':1}, 12 {'name':'tony','pwd':'123123','times':1}, 13 {'name':'shuyang','pwd':'123123','times':1} 14 ] 15 user = input('用戶名:') 16 pwd = input('密碼:') 17 18 for item in user_list: 19 if user == item['name'] and pwd == item['pwd']: 20 print('登陸成功')
文件操做有讀、寫,追加等,分別對應r,w,a等,今天只對讀寫,進行初步的認識。之後在具體討論,謝謝!
一、打開文件並讀取內容
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # Author:Shu Yang Wang 4 5 #打開並讀取文件內容 6 #以只讀模式打開文件句柄 7 f1 = open('db', 'r') 8 #把文件內容讀取到內存當中 9 data = f1.read() 10 #關閉文件句柄 11 f1.close() 12 13 #打印文件內容 14 print(data)
二、寫入文件內容
1 #寫入文件內容 2 3 user_info_write = ‘a\nb\nc\n’ 4 5 #以寫模式打開db文件句柄 6 f2 = open('db', 'w') 7 #以覆蓋db文件內容方式寫入文件 8 f2.write(user_info_write) 9 #關閉文件句柄 10 f2.close()
三、實例
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # Author:Shu Yang Wang 4 5 ''' 6 登陸示例 7 1. 打開並讀取文件內容 8 2. 格式化,列表中嵌套字典 9 3. 列表中嵌套的字典 10 4. 從新寫入文件 11 ''' 12 13 #1. 打開並讀取文件內容 14 f1 = open('db', 'r') 15 data = f1.read() 16 f1.close() 17 18 # 2. 格式化,列表中嵌套字典 19 print(data) 20 user_info_list = [] 21 user_str_list = data.split('\n') 22 for item in user_str_list: 23 temp = item.split('|') 24 v = { 25 'name': temp[0], 26 'pwd': temp[1], 27 'times': temp[2] 28 } 29 user_info_list.append(v) 30 user_info_list[1]['times'] = 3 31 print(user_info_list) 32 33 #3. 列表中嵌套的字典 34 user_info_write = '' 35 for item_write in user_info_list: 36 temp_write = '%s|%s|%s\n'%(item_write['name'], item_write['pwd'], item_write['times']) 37 user_info_write = '%s%s' %(user_info_write,temp_write) 38 print(user_info_write) 39 40 #4. 寫入文件內容 41 f2 = open('db', 'w') 42 f2.write(user_info_write) 43 f2.close()
一、註解1:
a. 解釋型語言和編譯型語言
計算機是不可以識別高級語言的,因此當咱們運行一個高級語言程序的時候,就須要一個「翻譯機」來從事把高級語言轉變成計算機能讀懂的機器語言的過程。這個過程分紅兩類,第一種是編譯,第二種是解釋。
編譯型語言在程序執行以前,先會經過編譯器對程序執行一個編譯的過程,把程序轉變成機器語言。運行時就不須要翻譯,而直接執行就能夠了。最典型的例子就是C語言。
解釋型語言就沒有這個編譯的過程,而是在程序運行的時候,經過解釋器對程序逐行做出解釋,而後直接運行,最典型的例子是Ruby。
經過以上的例子,咱們能夠來總結一下解釋型語言和編譯型語言的優缺點,由於編譯型語言在程序運行以前就已經對程序作出了「翻譯」,因此在運行時就少掉了「翻譯」的過程,因此效率比較高。可是咱們也不能一律而論,一些解釋型語言也能夠經過解釋器的優化來在對程序作出翻譯時對整個程序作出優化,從而在效率上超過編譯型語言。
此外,隨着Java等基於虛擬機的語言的興起,咱們又不能把語言純粹地分紅解釋型和編譯型這兩種。
用Java來舉例,Java首先是經過編譯器編譯成字節碼文件,而後在運行時經過解釋器給解釋成機器文件。因此咱們說Java是一種先編譯後解釋的語言。
b.圖例:
c.編譯型vs解釋型
編譯型
優勢:編譯器通常會有預編譯的過程對代碼進行優化。由於編譯只作一次,運行時不須要編譯,因此編譯型語言的程序執行效率高。能夠脫離語言環境獨立運行。
缺點:編譯以後若是須要修改就須要整個模塊從新編譯。編譯的時候根據對應的運行環境生成機器碼,不一樣的操做系統之間移植就會有問題,須要根據運行的操做系統環境編譯不一樣的可執行文件。
解釋型
優勢:有良好的平臺兼容性,在任何環境中均可以運行,前提是安裝瞭解釋器(虛擬機)。靈活,修改代碼的時候直接修改就能夠,能夠快速部署,不用停機維護。
缺點:每次運行的時候都要解釋一遍,性能上不如編譯型語言。
d.更多解釋詳見
http://www.cnblogs.com/alex3714/articles/5465198.html
http://www.cnblogs.com/wupeiqi/articles