1. 程式人生 > >全國計算機等級考試二級教程--python語言程式設計(2018年版)第三章:基本資料型別

全國計算機等級考試二級教程--python語言程式設計(2018年版)第三章:基本資料型別

宣告:本篇文章只是個人知識盲區、知識弱點、重點部分的歸納總結,望各位大佬不喜勿噴。梳理順序是按照書籍的實際順序梳理,轉載請註明出處。

作者:sumjess

 

一、數字型別:

1、整數型別:

      整數型別有4種進製表示:十進位制、二進位制、八進位制和十六進位制。

      預設情況,整數採用十進位制,其他進位制需要增加引導符號,二進位制數以0b引導,八進位制數以0o引導,十六進位制數以0x引導,大小寫均可使用

      不同進位制的整數之間可以直接運算。

2、浮點數型別:

      1、Python語言中的浮點數型別必須帶有小數部分,小數部分可以是0。

      2、科學計數法的使用:1.01e3  

      3、整數運算精度比浮點數更高。

      4、python語言的浮點數運算存在一個“不確定尾數”問題,即兩個浮點數運算,有一定概率在運算結果後增加一些“不確定的”尾數,如下例:

     此時需要使用:round(x , d)是一個四捨五入的函式,能夠對x進行四捨五入操作,其中引數d,指定保留的小數位數,如下例:

    round可以進行位數的控制。

3、複數型別:

      1、在python中,複數可以看作是二元有序實數對(a,b),表示a+bj,其中a是實部,b是虛部。虛數部分通過後綴“J”或者“j”來表示。需要注意,當b為1時,1不能省略,即1j代表複數,而j則表示程式中的一個變數。

      2、z.real和z.imag分別獲得他們的實數部分和虛數部分。

二、數字型別的運算:

1、數值運算操作符:

      x + y        
 x與y之和

      x - y          x與y之差

      x * y          x與y之積

      x / y          x與y之商,產生結果為浮點數

      x // y         x與y之整數商,即:不大於x與y之商的最大整數

      x % y        x與y之商的餘數,也成為模運算

      x ** y         x的y次冪,即:x^y

        - x            x的負值,即:x*(-1)

        +x            x本身

注意事項:

         1、數值運算可能改變結果的資料型別,型別的改變與運算子有關,有如下基本規則:

            ① 整數和浮點數混合運算,結果是浮點數。.

            ② 整數之間的運算,產生結果型別與操作符相關,/ 運算的結果是浮點數。

            ③ 整數或浮點數與複數運算,輸出結果是複數。

         2、所以的二元運算操作符都可以與賦值符號相連,形成增強賦值操作符。(增強賦值操作符中運算子與=之間不能有空格)

2、數值運算函式:

      (1)abs(x)用於計算整數或浮點數x的絕對值(複數則是求模

      (2)divmod(x,y)同時返回兩個值,分別是x和y的整數商和除法餘數,可以通過兩個變數連續賦值的方式獲得這兩個值,也可以用一個變數儲存這個值,並採用[]進行索引

      (3)pow(x,y)用來計算x的y次冪,與x**y相同。拓展:pow(x,y,z)則用來計算x^y%z,模運算與冪運算同時進行,速度更快

      (4)round(x)對整數或浮點數x進行四捨五入運算,詳細見上面一小節

      (5)min()和 max()對多個任意數字進行最小值或最大值的比較,並輸出結果

三、字串型別及格式化:

1、

        單行字串可以由一對單引號(‘)或雙引號(")作為邊界來表示。

        多行字串可以由一對三單引號(‘‘‘   ’’’)或三雙引號(“““   ”””)作為邊界來表示,

例子如下:

反斜槓字元的作用:

\n表示換行、\\表示反斜槓、\'表示單引號、\"表示雙引號、\t表示製表符(tab)等

② 如果在字元中需要出現單引號需要出現雙引號,則需使用轉義符。

③ 反斜槓字元(\)還有續寫的功能。

2、字串的索引:

      <字串或字串變數>[序號]

3、字串的切片:

      <字串或字串變數>[N:M]  切片獲取字串從N到M(不包括M)的子字串。

4、format()方法的基本使用:

    (1)python語言推薦使用.format()格式化方法,其使用方式如下:

               <模板字串> .format(<逗號分隔的引數>)     其中,模板字串是一個由字串和槽組成的字串,用來控制字串和變數的顯示效果。槽用大括號({ })表示,對應format()方法中逗號分隔的引數

    (2)注意: 如果模板字元有多個槽,且槽內沒有指定序號,則按照槽出現的順序分別對應.format()方法中的不同引數。 可以通過format()引數的序號在模板字串中槽中指定引數使用,引數從0開始編號。

5、format()方法的格式控制:

    (1)format()方法的槽除了包括引數序號,還可以包括格式控制資訊,語法格式如下:

              {  <引數序號> :<格式控制標記> }    

             格式控制標記包括:<填充><對齊><寬度><,><.精度><型別>

    (2)第一組是<填充><對齊><寬度>

            <寬度>是指當前槽的設定輸出字元寬度,如果該槽引數實際值比寬度設定值大,則使用引數實際長度。如果該值的實際位數小於指定寬度,則按照對齊指定方式在寬度內對齊,預設以空格字元填充。

            <對齊>分別使用<>^三個符號表示左對齊、右對齊和居中對齊

            <填充>填充欄位可以修改預設填充字元,填充字元只能有一個。

    (3)第二組是<,><.精度><型別>

            <,>用於顯示數字型別的千位分隔符。

            <.精度>由小數點(.)開頭。對於浮點數,精度表示小數部分輸出的有效位數。對於字串精度表示輸出的最大長度。注意區別與<寬度>的不同:如果實際長度大於精度設定長度,輸出將被截斷。

            <型別>表示輸出整數和浮點數型別的格式規則。

                        對於整數型別,輸出格式包括如下6種:

                             b:輸出整數的二進位制方式;

                             c:輸出整數的對應的Unicode字元;

                             d:輸出整數的十進位制方式;

                             o:輸出整數的八進位制方式;

                             x:輸出整數的小寫十六進位制方式;

                             X:輸出整數的大寫十六進位制方式;

                        對於浮點數型別,輸出格式包括如下4種:

                             e:輸出浮點數對應的小寫字母e的指數形式;

                             E:輸出浮點數對應的大寫字母E的指數形式;

                             f:輸出浮點數的標準浮點形式;

                             %:輸出浮點數的百分比形式;

 

    (4)一些常用的format()方法格式控制資訊,建議讀者掌握。例如:

            

                

四、字串型別的操作:

1、字串操作符:

        x+y                 連線兩個字串x與y

        x*n或n*x        複製n次字串x

        x in s              如果x是s的子串,返回True,否則返回False

2、字串處理函式:

        (1)len(x)返回字串x的長度,以Unicode字元為計數基礎,因此,中英文字元及標點符號等都是一個單位長度。

        (2)str(x)返回字串形式,其中,x是數字型別或其他型別。

        (3)chr(x)ord(x)函式用於在單字元和Unicode編碼值之間進行轉換。chr(x)函式返回Unicode編碼對應的字元,ord(x)函式返回單字元x對應的Unicode編碼、

        (4)hex(x)oct(x)函式分別返回整數x對應十六進位制和八進位制值的字串形式,字串以小寫形式。

3、字串處理方法:

        (1)方法也是一個函式只是呼叫方式不同。函式採用func(x)方式呼叫,而方法則採用

                 <a>.func(x)形式呼叫。方法以前導物件<a>為輸入。

        (2)注意下文中str代表一個字串或字串變數。

             ① str.lower()str.upper()是一對方法,能夠將字串的英文字元變成小寫或大寫。

                 

             ② str.split(sep)能夠根據sep分割字串str。sep不是必須的,預設採用空格,sep可以是單個字元,也可以是一個字串。分隔後內容以列表型別返回。

             ③ str.count(sub)方法返回字串str中出現sub的次數,sub是一個字串、

             ④ str.replace(old,new)方法將字串str中出現的old字串替換為new字串。

           

            ⑤ str.center(width,fillchar)方法返回長度為width的字串。其中str處於新字串的中心位置,兩側新增字符采用fillchar填充。

            ⑥ str.strip(chars)從字串str中去掉在其最左側和右側chars中列出的字元。chars是個字串,其中出現的每一個字元都會被去掉。

            ⑦ str.join(iter)中iter是一個具備迭代性質的變數,該方法將str字串插入iter變數的元素之間,形成新的字串。

五、型別判斷和型別間轉換:

1、type(x)函式對變數x進行型別判斷,適用於任何資料型別

          

注意:如果需要在條件判斷中使用變數型別作為條件,可以使用type()函式直接進行比較

2、①  int(x)將x轉換為整數, x可以是浮點數或字串

      ②  float(x)將x轉換為浮點數, x可以是整數或字串

      ③  str(x)將x轉換為字串, x可以是浮點數或整數

六、例項解析---愷撒密碼:

在密碼學中,愷撒密碼(英語:Caesar cipher),或稱愷撒加密愷撒變換變換加密,是一種最簡單且最廣為人知的加密技術。它是一種替換加密的技術,明文中的所有字母都在字母表上向後(或向前)按照一個固定數目進行偏移後被替換成密文。例如,當偏移量是3的時候,所有的字母A將被替換成D,B變成E,以此類推。這個加密方法是以羅馬共和時期愷撒的名字命名的,當年愷撒曾用此方法與其將軍們進行聯絡。

與加密方法相對應,對漢字文字的解密方法是將對應的Unicode碼左移3位方式,字母仍然按照凱撒密碼方式解密。參考程式碼如下:

etxt = input("請輸入加密後文本:")
for p in etxt:
    if "a" <= p <= "z":
        print(chr(ord("a")+(ord(p)-ord("a")+3)%26),end='')
    elif "A" <= p <="Z":
        print(chr(ord("A")+(ord(p)-ord("A")+3)%26),end='')
    elif 0x4E00 <= ord(p) <= 0x9FA5:
        print(chr(ord(p)-3),end='')
    else:
        print(p,end='')
        

七、習題3:

(1)Python不支援的資料型別char

                     支援的資料型別有 :int、float、bool、complex(複數)、String(字串)、                                                              List(列表)、Tuple(元祖)、Set(集合)、Dictionary(字典)等

(2)合法的字串:"a'bcd'efg"    'a"bcd"efg'     "a/"bcd/"efg"     'a/'bcd/'efg'

(3)Python語言中1j表示複數,而j表示python的一個變數。1+j不是複數。

(4)Python不支援的函式string()
                     支援的函式len()、str()、chr()、ord()、hex()、oct()

(5)Python函式type()可以作用於任何資料型別和字串型別

(6)(1+1j)*0結果是複數型別