一、py2和py3的區別 最大的區別在於,py3對Unicode的支持 官方將在2020年停止對py2.7的支持 One popular module that don't yet support Python 3 is Twisted (for networking and other appli ...
一、py2和py3的區別
最大的區別在於,py3對Unicode的支持
官方將在2020年停止對py2.7的支持
One popular module that don't yet support Python 3 is Twisted (for networking and other applications).後續將會支持
二、Hello World程式
在linux 下創建一個文件叫hello.py,並輸入
1 print("Hello World!")View Code
然後執行命令:python hello.py ,輸出
1 localhost:~ jieli$ vim hello.py 2 3 localhost:~ jieli$ python hello.py 4 5 Hello World!View Code
指定解釋器
上一步中執行 python hello.py 時,明確的指出 hello.py 腳本由 python 解釋器來執行。
如果想要類似於執行shell腳本一樣執行python腳本,例: ./hello.py
,那麼就需要在 hello.py 文件的頭部指定解釋器,如下:
1 #!/usr/bin/env python 2 3 4 5 print "hello,world"View Code
如此一來,執行: ./hello.py
即可。
ps:執行前需給予 hello.py 執行許可權,chmod 755 hello.py
三、變數
Variables are used to store information to be referenced and manipulated in a computer program. They also provide a way of labeling data with a descriptive name, so our programs can be understood more clearly by the reader and ourselves. It is helpful to think of variables as containers that hold information. Their sole purpose is to label and store data in memory. This data can then be used throughout your program.
變數定義的規則:
- 變數名只能是 字母、數字或下劃線的任意組合
- 變數名的第一個字元不能是數字
- 以下關鍵字不能聲明為變數名 :['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 name = "oldboy" 2 name2 = name 3 name = "newboy" 4 print("my name is",name,name2)View Code
運行結果是:
my name is newboy oldboy
原因是:name和name2指向同一個字元串“oldboy”,將name重新賦值後,name指向“newboy”,而name2指向不變,仍然是“oldboy”
四、字元編碼
常見的編碼類型有:ASCII編碼(適用於現代英語和其他西歐語言);簡體中文的GB2312(7000+個漢字)、GBK1.0(21000+個漢字)、GBK18030(27000+個漢字);繁體中文的big5
ASCII(American Standard Code for Information Interchange,美國標準信息交換代碼)是基於拉丁字母的一套電腦編碼系統,主要用於顯示現代英語和其他西歐語言,其最多只能用 8 位來表示(一個位元組),即:2**8 = 256-1,所以,ASCII碼最多只能表示 255 個符號。
顯然ASCII碼無法將世界上的各種文字和符號全部表示,所以,就需要新出一種可以代表所有字元和符號的編碼,即:Unicode
Unicode(統一碼、萬國碼、單一碼)是一種在電腦上使用的字元編碼。Unicode 是為瞭解決傳統的字元編碼方案的局限而產生的,它為每種語言中的每個字元設定了統一併且唯一的二進位編碼,規定雖有的字元和符號最少由 16 位來表示(2個位元組),即:2 **16 = 65536, 註:此處說的的是最少2個位元組,可能更多
UTF-8,是對Unicode編碼的壓縮和優化,他不再使用最少使用2個位元組,而是將所有的字元和符號進行分類:ascii碼中的內容用1個位元組保存、歐洲的字元用2個位元組保存,東亞的字元用3個位元組保存...
代碼註釋
單行註視:# 被註釋內容
多行註釋:""" 被註釋內容 """
五、輸入與字元格式化
使用input輸入,有多種字元串格式化方法:
1 name = input("name:") 2 age = input("age:") 3 job = input("job:") 4 salary = input("salary:") 5 6 info = """-------info of {_name}-------- 7 name:{_name} 8 age:{_age} 9 job:{_job} 10 salary:{_salary} 11 """.format(_name=name,_age=age,_job=job,_salary=salary) 12 13 info2 = """-------info of %s-------- 14 name:%s 15 age:%d 16 job:%s 17 salary:%d 18 """%(name,name,int(age),job,int(salary)) 19 20 info3 = """-------info of {0}-------- 21 name:{0} 22 age:{1} 23 job:{2} 24 salary:{3} 25 """.format(name,int(age),job,int(salary)) 26 27 print(info) 28 print(info2) 29 print(info3)View Code
對於密碼輸入,如果想要不可見,需要利用getpass 模塊中的 getpass方法,即:
1 import getpass 2 3 # 將用戶輸入的內容賦值給 name 變數 4 5 pwd = getpass.getpass("請輸入密碼:") 6 7 # 列印輸入的內容 8 9 print(pwd)View Code
在pyCharm下使用有問題,可以在命令行下執行,看getpass效果
六、if...else表達式
場景一: 通過條件判斷用戶輸入的賬號密碼是否正確,正確就彈出歡迎詞
1 # 提示輸入用戶名和密碼 2 3 4 5 # 驗證用戶名和密碼 6 7 # 如果錯誤,則輸出用戶名或密碼錯誤 8 9 # 如果成功,則輸出 歡迎,XXX! 10 11 12 13 14 15 #!/usr/bin/env python 16 17 # -*- coding: encoding -*- 18 19 20 import getpass 21 22 23 24 name = raw_input('請輸入用戶名:') 25 26 pwd = getpass.getpass('請輸入密碼:') 27 28 29 30 if name == "alex" and pwd == "cmd": 31 32 print("歡迎,alex!") 33 34 else: 35 36 print("用戶名和密碼錯誤")View Code
場景二:在程式里設定好你的年齡,然後啟動程式讓用戶猜測,用戶輸入後,根據他的輸入提示用戶輸入的是否正確,如果錯誤,提示是猜大了還是小了
1 guess_age = int(input("guessage:")) 2 if guess_age == my_age: 3 print("yes,you got it!") 4 break 5 elif guess_age > my_age: 6 print("guess smaller...") 7 else: 8 print("guess bigger!")View Code
七、while迴圈
通過while迴圈優化猜年齡的程式,程式設置猜3次,不對就退出,註意迴圈中對else的使用:
1 my_age = 34 2 count = 0 3 while count < 3: 4 guess_age = int(input("guessage:")) 5 if guess_age == my_age: 6 print("yes,you got it!") 7 break 8 elif guess_age > my_age: 9 print("guess smaller...") 10 else: 11 print("guess bigger!") 12 count += 1 13 else:#註意這裡,針對while迴圈可以使用else語句,讓程式更簡單精煉 14 print("too many times,byebye!")View Code
八、for迴圈
使用for迴圈,實現while相同的效果,也使用了else語句:
1 my_age = 34 2 for i in range(3): 3 guess_age = int(input("guessage:")) 4 if guess_age == my_age: 5 print("yes,you got it!") 6 break 7 elif guess_age > my_age: 8 print("guess smaller...") 9 else: 10 print("guess bigger!") 11 else: 12 print("too many times,byebye!")View Code
最終,再次優化,實現用戶可以根據自己的需要,一直猜下去:
1 my_age = 34 2 count =0 3 while count <3: 4 guess_age = int(input("guessage:")) 5 if guess_age == my_age: 6 print("yes,you got it!") 7 break 8 elif guess_age > my_age: 9 print("guess smaller...") 10 else: 11 print("guess bigger!") 12 count +=1 13 if count ==3: 14 continue_confime = input("try again?") 15 if continue_confime != "n": 16 count = 0View Code
註意迴圈中break和continue的區別:
break是跳出當前這層迴圈的整個迴圈
1 for i in range(4): 2 print("-----------",i) 3 for j in range(4): 4 print("&&&&&&",j) 5 if j <2: 6 print("***",j) 7 else: 8 break
執行效果:
----------- 0
&&&&&& 0
*** 0
&&&&&& 1
*** 1
&&&&&& 2
----------- 1
&&&&&& 0
*** 0
&&&&&& 1
*** 1
&&&&&& 2
----------- 2
&&&&&& 0
*** 0
&&&&&& 1
*** 1
&&&&&& 2
----------- 3
&&&&&& 0
*** 0
&&&&&& 1
*** 1
&&&&&& 2
continue是跳出當次迴圈
1 for i in range(4): 2 print("-----------",i) 3 for j in range(4): 4 print("&&&&&&",j) 5 if j <2: 6 print("***",j) 7 else: 8 continue
執行結果:
----------- 0
&&&&&& 0
*** 0
&&&&&& 1
*** 1
&&&&&& 2
&&&&&& 3
----------- 1
&&&&&& 0
*** 0
&&&&&& 1
*** 1
&&&&&& 2
&&&&&& 3
----------- 2
&&&&&& 0
*** 0
&&&&&& 1
*** 1
&&&&&& 2
&&&&&& 3
----------- 3
&&&&&& 0
*** 0
&&&&&& 1
*** 1
&&&&&& 2
&&&&&& 3