Python電子教案32基本數(shù)據(jù)類型[通用]_第1頁
Python電子教案32基本數(shù)據(jù)類型[通用]_第2頁
Python電子教案32基本數(shù)據(jù)類型[通用]_第3頁
Python電子教案32基本數(shù)據(jù)類型[通用]_第4頁
Python電子教案32基本數(shù)據(jù)類型[通用]_第5頁
已閱讀5頁,還剩53頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、Python電子教案32基本數(shù)據(jù)類型字符串類型及其操作字符串是字符的序列表示,可以由一對單引號()、雙引號()或三引號()構(gòu)成,其中,單引號和雙引號都可以表示單行字符串,兩者作用相同。使用單引號時,雙引號可以作為字符串的一部分;使用雙引號時,單引號可以作為字符串的一部分。三引號可以表示單行或者多行字符串。三種表示方式如下字符串類型單引號字符串: 單引號表示,可以使用雙引號作為字符串的一部分雙引號字符串: 雙引號表示,可以使用單引號作為字符串的一部分三引號字符串: 三引號表示可以使用雙引號字符串類型打印字符串的Python運行結(jié)果如下,注意其中的引號部分:字符串類型input()函數(shù)將用戶輸入的

2、內(nèi)容當(dāng)作一個字符串類型,這是獲得用戶輸入的常用方式。print()函數(shù)可以直接打印字符串,這是輸出字符串的常用方式。如下例子展示了如何用變量name來存儲用戶的名字,再輸出這個變量的內(nèi)容:字符串類型第2.2.4節(jié)已經(jīng)介紹,字符串包括兩種序號體系:正向遞增序號和反向遞減序號。如果字符串長度為L,正向遞增需要以最左側(cè)字符序號為0,向右依次遞增,最右側(cè)字符序號為L-1;反向遞減序號以最右側(cè)字符序號為-1,向左依次遞減,最左側(cè)字符序號為-L。這兩種索引字符的方法可以在一個表示中使用。字符串類型Python字符串也提供區(qū)間訪問方式,采用N: M格式,表示字符串中從N到M(不包含M)的子字符串,其中,N和

3、M為字符串的索引序號,可以混合使用正向遞增序號和反向遞減序號。如果表示中M或者N索引缺失,則表示字符串把開始或結(jié)束索引值設(shè)為默認(rèn)值。字符串類型字符串以Unicode編碼存儲,因此,字符串的英文字符和中文字符都算作1個字符。觀察下面實例:字符串類型反斜杠字符()是一個特殊字符,在字符串中表示“轉(zhuǎn)義”,即該字符與后面相鄰的一個字符共同組成了新的含義。例如:n表示換行、表示反斜、表示單引號、”表示雙引號、t表示制表符(TAB)等。例如:字符串類型Python提供了5個字符串的基本操作符,如表3.10所示?;镜淖址僮鞣僮鞣枋鰔 + y連接兩個字符串x與yx * n 或 n * x復(fù)制n次字符

4、串xx in s如果x是s的子串,返回True,否則返回Falsestri索引,返回第i個字符strN: M剪切,返回索引第N到M的子串,其中不包含M與操作符有關(guān)的實例如下:字符串使用實例程序讀入一個表示星期幾的數(shù)字(1-7),輸出對應(yīng)的星期字符串名稱 例如:輸入3,返回“星期三”。代碼如下:運行結(jié)果如下:請輸入星期數(shù)字(1-7): 3 星期三微實例3.1:獲取星期字符串微實例3.1通過在字符串中截取適當(dāng)?shù)淖哟畞韺崿F(xiàn)星期名稱的查找。問題的關(guān)鍵在于找出子串的剪切位置。因為每個星期日期的縮寫都由3個字符組成,如果知道星期日期字符串的起始位置,就能很容易獲得縮寫子串。通過下面語句,可以獲得從起始位置

5、pos開始且長度為3的子串:weekAbbrev = weekstrpos: pos+3字符串使用實例使用字符串作為查找表的缺點是,所剪切的子字符串長度必須相同。如果各縮寫表示長度不同,還需要其他語句輔助例如,請讀者思考,該如何實現(xiàn)一個“獲取月份字符串”呢?要求根據(jù)1-12的數(shù)字返回月份名稱。字符串使用實例字符串中可以增加特殊的格式化控制字符,用來輸出特殊效果。特殊的格式化控制字符使用反斜杠()開頭,常用控制字符如下:a: 蜂鳴,響鈴 b:回退,向后退一格f:換頁 n:換行,光標(biāo)移動到下行首行t:水平制表 r:回車,光標(biāo)移動到本行首行v:垂直制表 0:NULL,什么都不做特殊的格式化控制字符P

6、ython解釋器提供了一些內(nèi)置函數(shù),詳細(xì)請參考5.8節(jié)。其中,有6個函數(shù)與字符串處理相關(guān),如表3.11所示。內(nèi)置的字符串處理函數(shù)函數(shù)描述len(x)返回字符串x的長度str(x)返回任意類型x所對應(yīng)的字符串形式chr(x)返回Unicode編碼x對應(yīng)的單字符ord(x)返回單字符表示的Unicode編碼hex(x)返回整數(shù)x對應(yīng)十六進(jìn)制數(shù)的小寫形式字符串oct(x)返回整數(shù)x對應(yīng)八進(jìn)制數(shù)的小寫形式字符串len(x)返回字符串x的長度,Python 3以Unicode字符為計數(shù)基礎(chǔ),因此,字符串中英文字符和中文字符都是1個長度單位str(x)返回x的字符串形式,其中,x可以是數(shù)字類型或其他類型內(nèi)

7、置的字符串處理函數(shù)每個字符在計算機(jī)中可以表示為一個數(shù)字,字符串則以數(shù)字序列的方式存儲在計算機(jī)中。目前,計算機(jī)系統(tǒng)使用的一個重要編碼是ASCII編碼,該編碼用數(shù)字0-127表示計算機(jī)鍵盤上常見的字符以及一些被稱為控制代碼的特殊值。例如,大寫字母A-Z用65-90表示,小寫字母a-z用97-122表示。內(nèi)置的字符串處理函數(shù)chr(x)和ord(x)函數(shù)用于在單字符和Unicode編碼值之間進(jìn)行轉(zhuǎn)換。chr(x)函數(shù)返回Unicode編碼對應(yīng)的字符,其中,Unicode編碼x的取值范圍是0到1,114,111(即十六進(jìn)制數(shù)0 x10FFFF)。ord(x)函數(shù)返回單字符x對應(yīng)的Unicode編碼。如

8、下:內(nèi)置的字符串處理函數(shù)設(shè)想在某些情況下給朋友傳遞字條信息,但又不希望傳遞中途被第三方看懂這些信息,因此需要對字條信息進(jìn)行加密處理。傳統(tǒng)加密算法很多,這里介紹一種非常簡單的加密算法凱撒密碼。顧名思義,凱撒密碼是古羅馬凱撒大帝用來對軍事情報進(jìn)行加密的算法,它采用了替換方法對信息中的每一個英文字符循環(huán)替換為該字符后面第三個字符,對應(yīng)關(guān)系如下:原文:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z密文:D E F G H I J K L M N O P Q R S T U V W X Y Z A B C微實例3.2:愷撒密碼假設(shè)用戶可能使用的信息

9、僅包括小寫字母a-z,則該微實例對應(yīng)的加密代碼如下:微實例3.2:愷撒密碼原文字符P,其密文字符C滿足如下條件:C = ( P + 3 ) mod 26解密方法反之,滿足:P = ( C 3 ) mod 26微實例3.2:愷撒密碼假設(shè)用戶可能使用的信息僅包括小寫字母a-z,則該微實例對應(yīng)的加密代碼如下:微實例3.2:愷撒密碼微實例運行結(jié)果如下:微實例3.2:愷撒密碼在Python解釋器內(nèi)部,所有數(shù)據(jù)類型都采用面向?qū)ο蠓绞綄崿F(xiàn),封裝為一個類。字符串也是一個類,它具有類似.b()形式的字符串處理函數(shù)。在面向?qū)ο笞值淅铮@類函數(shù)被稱為“方法”。字符串類型共包含43個內(nèi)置方法。鑒于部分內(nèi)置方法并不常用

10、,限于篇幅,這里僅介紹15個常用的內(nèi)置方法,如表3.12所示。內(nèi)置的字符串處理方法內(nèi)置的字符串處理方法函數(shù)描述str.lower()返回字符串str的副本,全部字符小寫str.upper()返回字符串str的副本,全部字符大寫str.islower() 當(dāng)str所有字符都是小寫時,返回True,否則Falsestr.isprintable()當(dāng)str所有字符都是可打印的,返回True,否則Falsestr. isnumeric()當(dāng)str所有字符都是字符時,返回True,否則Falsestr.isspace() 當(dāng)str所有字符都是空格,返回True,否則Falsestr.endswith(s

11、uffix,start,end)strstart: end 以suffix結(jié)尾返回True,否則返回Falsestr.startswith(prefix, start, end) strstart: end 以suffix開始返回True,否則返回Falsestr.split(sep=None, maxsplit=-1)返回一個列表,由str根據(jù)sep被分割的部分構(gòu)成str.count(sub,start,end)返回strstart: end中sub子串出現(xiàn)的次數(shù)內(nèi)置的字符串處理方法str.replace(old, new, count)返回字符串str的副本,所有old子串被替換為new,

12、如果count給出,則前count次old出現(xiàn)被替換str.center(width, fillchar)字符串居中函數(shù),詳見函數(shù)定義str.strip(chars) 返回字符串str的副本,左側(cè)和右側(cè)去掉在chars中列出字符str.zfill(width) 返回字符串str的副本,長度為width,不足部分在左側(cè)添0 str.format()返回字符串str的一種排版格式,3.6節(jié)將詳細(xì)介紹str.join(iterable)返回一個新字符串,由組合數(shù)據(jù)類型(見第6章)iterable變量的每個元素組成,元素間用str分割str.split(sep=None, maxsplit=-1)方法

13、返回一個列表,列表是一種存儲多個數(shù)據(jù)的數(shù)據(jù)類型,第6.2節(jié)將詳細(xì)介紹,其中,分割str的標(biāo)識符是sep,默認(rèn)分隔符為空格。如果給出maxsplit參數(shù),則只分割前maxsplit個字符,默認(rèn)maxsplit參數(shù)可以不給出。str.center(width, fillchar)方法返回長度為width的字符串,其中,str處于新字符串中心位置,兩側(cè)新增字符采用fillchar填充,當(dāng)width小于字符串長度時,返回str。內(nèi)置的字符串處理方法str.zfill(width)方法返回長度為width的字符串,如果字符串長度不足width時,在左側(cè)添加字符“0”,但如果str最左側(cè)是字符“+“或者”

14、-”,則從第二個字符左側(cè)添加“0”,當(dāng)width小于字符串長度時,返回str內(nèi)置的字符串處理方法字符串類型的格式化為什么會有字符串類型的格式化問題呢?例如,一個程序希望輸出如下內(nèi)容:“2016-12-31: 計算機(jī)PYTHON的CPU占用率為10%。”其中,下劃線內(nèi)容可能會變化,需要由特定函數(shù)運算結(jié)果進(jìn)行填充,最終形成上述格式字符串作為輸出結(jié)果。字符串格式化用于解決字符串和變量同時輸出時的格式安排。format()方法的基本使用字符串format()方法的基本使用格式是:.format()由一系列的槽組成,用來控制修改字符串中嵌入值出現(xiàn)的位置,其基本思想是將format()方法的中的參數(shù)按照序

15、號關(guān)系替換到的槽中。槽用大括號()表示,如果大括號中沒有序號,則按照出現(xiàn)順序替換format()方法的基本使用如圖3.2所示。如果大括號中指定了使用參數(shù)的序號,按照序號對應(yīng)參數(shù)替換,如圖3.3所示。調(diào)用format()方法后會返回一個新的字符串,參數(shù)從0開始編號。format()方法的基本使用format()方法的基本使用format()方法可以非常方便地連接不同類型的變量或內(nèi)容,如果需要輸出大括號,采用表示,表示,例如:format()方法的基本使用format()方法中的槽除了包括參數(shù)序號,還可以包括格式控制信息。此時,槽的內(nèi)部樣式如下:: 其中,用來控制參數(shù)顯示時的格式,格式內(nèi)容如圖3.

16、4所示。format()方法的格式控制format()方法的格式控制包括:,6個字段,這些字段都是可選的,可以組合使用,這里按照使用方式逐一介紹、和是3個相關(guān)字段。指當(dāng)前槽的設(shè)定輸出字符寬度,如果該槽對應(yīng)的format()參數(shù)長度比設(shè)定值大,則使用參數(shù)實際長度。如果該值的實際位數(shù)小于指定寬度,則位數(shù)將被默認(rèn)以空格字符補(bǔ)充。format()方法的格式控制指參數(shù)在內(nèi)輸出時的對齊方式,分別使用和三個符號表示左對齊、右對齊和居中對齊。指內(nèi)除了參數(shù)外的字符采用什么方式表示,默認(rèn)采用空格,可以通過更換。format()方法的格式控制format()方法的格式控制表示兩個含義,由小數(shù)點(.)開頭。對于浮點數(shù)

17、,精度表示小數(shù)部分輸出的有效位數(shù)。對于字符串,精度表示輸出的最大長度format()方法的格式控制表示輸出整數(shù)和浮點數(shù)類型的格式規(guī)則。b: 輸出整數(shù)的二進(jìn)制方式;c: 輸出整數(shù)對應(yīng)的Unicode字符;d: 輸出整數(shù)的十進(jìn)制方式;o: 輸出整數(shù)的八進(jìn)制方式;x: 輸出整數(shù)的小寫十六進(jìn)制方式;X: 輸出整數(shù)的大寫十六進(jìn)制方式;format()方法的格式控制對于浮點數(shù)類型,輸出格式包括4種:e: 輸出浮點數(shù)對應(yīng)的小寫字母e的指數(shù)形式;E: 輸出浮點數(shù)對應(yīng)的大寫字母E的指數(shù)形式;f: 輸出浮點數(shù)的標(biāo)準(zhǔn)浮點形式;%: 輸出浮點數(shù)的百分形式。浮點數(shù)輸出時盡量使用表示小數(shù)部分的寬度,有助于更好控制輸出格式

18、。format()方法的格式控制文本進(jìn)度條進(jìn)度條是計算機(jī)處理任務(wù)或執(zhí)行軟件中增強(qiáng)用戶體驗的重要手段,它能夠?qū)崟r顯示任務(wù)或軟件的執(zhí)行進(jìn)度,十分常用。本節(jié)將利用Python字符串處理方法實現(xiàn)文本進(jìn)度條功能。最簡單的,利用print()函數(shù)實現(xiàn)簡單的非刷新文本進(jìn)度條?;舅枷胧前凑杖蝿?wù)執(zhí)行百分比將整個任務(wù)劃分為100個單位,每執(zhí)行N%輸出一次進(jìn)度條。每一行輸出包含進(jìn)度百分比,代表已完成的部分(*)和未完成的部分(.)的兩種字符,以及一個跟隨完成度前進(jìn)的小箭頭簡單的開始%10 *-.簡單的開始由于程序執(zhí)行速度遠(yuǎn)超過人眼的視覺停留時間,直接進(jìn)行字符輸出幾乎是瞬間完成,不利于觀察。為了模擬任務(wù)處理的時間效

19、果,調(diào)用Python標(biāo)準(zhǔn)時間庫time,使用time.sleep(t)函數(shù)將當(dāng)前程序暫時掛起t秒,t可以是小數(shù)。由此可以接近真實的模擬進(jìn)度條效果輸出。簡單的開始默認(rèn)情況下,print()函數(shù)在輸出結(jié)尾處會自動產(chǎn)生一個n,即換行符,從而讓光標(biāo)自動移動到下一行行首,這樣上一步輸出依舊保存在界面上。采用for循環(huán)和print()函數(shù)構(gòu)成程序的主體部分,輸出百分比最高為3位數(shù)據(jù),為了使輸出顯得整齊,可以使用:3.0f格式化百分比部分。這個簡單的文本進(jìn)度條代碼如下。變量scale表示輸出進(jìn)度條的精度,讀者可以修改這個值觀察效果。簡單的開始簡單的開始簡單的開始常用的計算機(jī)系統(tǒng)中都有進(jìn)度條,這些進(jìn)度條一般只

20、在一行中改變進(jìn)度比例,與實例代碼4.1不同。簡單說,這個不同在于原地輸出和動態(tài)刷新,其基本思想是將每一次進(jìn)度輸出都固定在同一行,并不斷地用新生成的字符串覆蓋之前的輸出,形成進(jìn)度條不斷刷新的動態(tài)效果。這種效果簡稱為“單行動態(tài)刷新”,可以通過print()函數(shù)實現(xiàn)。單行動態(tài)刷新采用print()函數(shù)的具體方法是:在print()函數(shù)中更換參數(shù)end的默認(rèn)值為,即每次使用prin()函數(shù)輸出時不換行。此時,系統(tǒng)輸出指針還停留在上一次輸出的行尾,下一次輸出在字符串前部增加轉(zhuǎn)義符r,該轉(zhuǎn)義符把輸出指針移動到行首而不換行。動態(tài)刷新一個百分比的完整代碼如下:帶刷新的文本進(jìn)度條單行動態(tài)刷新上述程序在IDLE中的執(zhí)行效果如圖,為什么輸出沒有單行刷新呢?這是因為IDLE本身屏蔽了單行刷新功能,如果希望獲得刷新效果,請使用控制臺的命令行執(zhí)行e4.2TextProgressBar.py程序。以Windows系統(tǒng)為例

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論