python學習筆記(一)

來源:互聯網
上載者:User

標籤:不同   區別   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學習筆記(一)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.