標籤:不同 區別 dir 位元組碼 ext 傳統 upload div 轉換
目錄:
一、變數與常量
二、字元編碼
三、使用者互動程式
四、if else語句
五、迴圈
六、模組初識
七、PYC是什麼
八、資料類型與資料運算
九、bytes資料類型
十、三元運算
十一、十六進位標記法
十二、位元組包與字串的區別
十三、列表的使用
十四、元祖
十五、字串常用操作
十六、字典的使用
一、常量與變數
常量:python沒有常量的概念,通常我們把常量名大寫,表示不可修改
變數:
1.變數定義規則:
a.變數名只能是字母、數字、底線任意組合。
b.變數的第一個字元不能是數字
c.以下關鍵字不能聲明為變數名:
[‘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‘]
2.變數賦值時注意的問題:
name = "Redleafage Zhang" #name指向Redleafage Zhangname2 = name #name2指向Redleafage Zhang,而不是nameprint("My name is ",name,name2) #列印結果:My name is Redleafage Zhang Redleafage Zhangname = "Paoche Ge" #name指向了Paoche Ge,但name2依然指向Redleafage Zhangprint(name,name2) #列印結果:Paoche Ge Redleafage Zhang
當用一個變數賦值另一個變數時,另一個變數指向的是先前的變數指向的值,而不是變數指標。因此,修改原變數的值後,新賦值的變數值不會隨之改變。
二、字元編碼
1.編碼曆史:
ASCII(American Standard Code for Information Interchange,美國標準資訊交換代碼)是基於拉丁字母的一套電腦編碼系統,主要用於顯示現代英語和其他西歐語言,其最多隻能用 8 位來表示(一個位元組),即:2**8 = 256-1,所以,ASCII碼最多隻能表示 255 個符號。
為了處理漢字,程式員設計了用於簡體中文的GB2312和用於繁體中文的big5。
GB2312(1980年)一共收錄了7445個字元,包括6763個漢字和682個其它符號。漢字區的內碼範圍高位元組從B0-F7,低位元組從A1-FE,佔用的碼位是72*94=6768。
其中有5個空位是D7FA- D7FE。
GB2312 支援的漢字太少。1995年的漢字擴充規範GBK1.0收錄了21886個符號,它分為漢字區和圖形符號區。漢字區包括21003個字元。2000年的 GB18030是取代GBK1.0的正式國家標
准。該標準收錄了27484個漢字,同時還收錄了藏文、蒙文、維吾爾文等主要的少數民族文字。現在的PC平台必須支援GB18030,對嵌入式產品暫不作要求。所以手機、MP3一般只支援
GB2312。
從ASCII、GB2312、GBK 到GB18030,這些編碼方法是向下相容的,即同一個字元在這些方案中總是有相同的編碼,後面的標準支援更多的字元。在這些編碼中,英文和中文可以統一地處
理。區分中文編碼的方法是高位元組的最高位不為0。按照程式員的稱呼,GB2312、GBK到GB18030都屬於雙位元組字元集 (DBCS)。
有的中文Windows的預設內碼還是GBK,可以通過GB18030升級包升級到GB18030。不過GB18030相對GBK增加的字元,普通人是很難用到的,通常我們還是用GBK指代中文Windows內碼。
顯然ASCII碼無法將世界上的各種文字和符號全部表示,所以,就需要新出一種可以代表所有字元和符號的編碼,即:Unicode
Unicode(統一碼、萬國碼、單一碼)是一種在電腦上使用的字元編碼。Unicode 是為瞭解決傳統的字元編碼方案的局限而產生的,它為每種語言中的每個字元設定了統一併且唯一的二進
制編碼,規定雖有的字元和符號最少由 16 位來表示(2個位元組),即:2 **16 = 65536,
註:此處說的的是最少2個位元組,可能更多
UTF-8,是對Unicode編碼的壓縮和最佳化,他不再使用最少使用2個位元組,而是將所有的字元和符號進行分類:ascii碼中的內容用1個位元組儲存、歐洲的字元用2個位元組儲存,東亞的字元用3
個位元組儲存...
所以,python解譯器在載入 .py 檔案中的代碼時,會對內容進行編碼(預設ascill)
三、使用者互動程式
1.輸入:input
注意:input輸入的值預設為str類型,如果需要其它類型,則要強制轉換
2.格式化輸出:
方法一:
name = input("name:")age = int(input("age:"))print(type(age))job = input("job:")salary = input("salary:")info1 = ‘‘‘-------- info of {_name} -----Name:%sAge:%sJob:%sSalary:%s‘‘‘ % (name,name,age,job,salary)
方法二:
info2 = ‘‘‘-------- info of {_name} -----Name:{_name}Age:{_age}Job:{_job}Salary:{_salary}‘‘‘ .format(_name = name, _age = age, _job = job, _salary = salary)
方法三:
info3 = ‘‘‘-------- info of {0} -----Name:{0}Age:{1}Job:{2}Salary:{3}‘‘‘ .format(name,age,job,salary)
3.隱藏密碼
如需要輸入密碼,可用getpass模組(pycharm裡不能用,只能在shell裡運行)
import getpassusername = input("username:")password = getpass.getpass("password:")print(username,password)
四、if else語句
age_of_oldboy = 56count = 0while count <3: guess_age = int(input("guess age:")) if guess_age == age_of_oldboy: print("yes,you got it!") break elif guess_age >age_of_oldboy: print("think smaller....") else: print("think bigger...") count += 1 if count == 3: continue_confirm = input("do you want to keep guessing...?") if continue_confirm != ‘n‘: count = 0
五、迴圈:
1.while迴圈
# Author:Redleafage Zhangage_of_oldboy = 56count = 0while count <3: guess_age = int(input("guess age:")) if guess_age == age_of_oldboy: print("yes,you got it!") break elif guess_age >age_of_oldboy: print("think smaller....") else: print("think bigger...") count += 1else: #while也可加else,表示如果不符合迴圈條件,則執行else內容 print("you have tried too many times...fuck off")
2.for迴圈
1 age_of_oldboy = 56 2 for i in range(3): 3 guess_age = int(input("guess age:")) 4 if guess_age == age_of_oldboy: 5 print("yes,you got it.") 6 break 7 elif guess_age > age_of_oldboy: 8 print("think smaller...") 9 else:10 print("think bigger!")11 else: #for迴圈一樣可以用else,道理同while12 print("you have tried too many times..fuck off")
3.range
格式:range(開始,結尾,步進數)
for i in range(0,10,2) print(i) #此代碼只列印0,2,4,6,8
4.countinue
跳出本次迴圈,執行下一次迴圈
for i in range(0,10): if i < 3: print("loop",i) else: continue print("hehe")
六、模組初識
1.sys模組
sys.path:列印環境變數
site-package一般為第三方庫存放位置,標準庫在上一級菜單lib裡,一般標準庫都在print(sys.path)列印出來的這幾個路徑裡
sys.argv:列印當前檔案相對路徑,在後面可加參數。pycharm可調用絕對路徑。
# Author:Redleafage Zhangimport sysprint(sys.argv)print(sys.argv[2])
2.os模組
os.system(‘dir‘):win系統下列印目前的目錄
os.mkdir(‘new_dir‘) :建立新模組
3.匯入模組:
import 模組名
注意:由於python搜尋模組自動在環境變數中的目錄下搜尋,因此不在同一路徑下時,匯入模組需要加路徑名,或者儲存在site-package下,或者增加新的環境變數(UDR)
七、PYC是什麼
在說這個問題之前,我們先來說兩個概念,PyCodeObject和pyc檔案。
我們在硬碟上看到的pyc自然不必多說,而其實PyCodeObject則是Python編譯器真正編譯成的結果。我們先簡單知道就可以了,繼續向下看。
當python程式運行時,編譯的結果則是儲存在位於記憶體中的PyCodeObject中,當Python程式運行結束時,Python解譯器則將PyCodeObject寫回到pyc檔案中。
當python程式第二次運行時,首先程式會在硬碟中尋找pyc檔案,如果找到,則直接載入,否則就重複上面的過程。
所以我們應該這樣來定位PyCodeObject和pyc檔案,我們說pyc檔案其實是PyCodeObject的一種持久化儲存方式。
PYC:先行編譯後的位元組碼檔案,不是機器碼,是個半成品。
過程:運行——尋找編譯結果——有的話直接運行,沒有的話進行編譯,並儲存在PYC中。
八、資料類型與資料運算
資料類型
1.數字
長整數 不過是大一些的整數。
3.23和52.3E-4是浮點數的例子。E標記表示10的冪。在這裡,52.3E-4表示52.3 * 10-4。
(-5+4j)和(2.3-4.6j)是複數的例子,其中-5,4為實數,j為虛數,數學中表示複數是什嗎?。
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(浮點型)
先掃盲 http://www.cnblogs.com/alex3714/articles/5895848.html
浮點數用來處理實數,即帶有小數的數字。類似於C語言中的double類型,佔8個位元組(64位),其中52位表示底,11位表示指數,剩下的一位表示符號。
complex(複數)
複數由實數部分和虛數部分組成,一般形式為x+yj,其中的x是複數的實數部分,y是複數的虛數部分,這裡的x和y都是實數。 註:Python中存在小數字池:-5 ~ 257 2、布爾值 真或假 1 或 0 3、字串
"hello world"
萬惡的字串拼接: python中的字串在C語言中體現為是一個字元數組,每次建立字串時候需要在記憶體中開闢一塊連續的空,並且一旦需要修改字串的話,就需要再次開闢空間,萬惡的+號每 出現一次就會在內從中重新開闢一塊空間。 二進位運算: a=60,b=13
python學習筆記(一)