全國計算機等級考試二級教程--python語言程式設計(2018年版)第三章:基本資料型別
阿新 • • 發佈:2018-12-23
宣告:本篇文章只是個人知識盲區、知識弱點、重點部分的歸納總結,望各位大佬不喜勿噴。梳理順序是按照書籍的實際順序梳理,轉載請註明出處。
作者: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結果是複數型別。