




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第1章編程語言與Python概述1.1計(jì)算機(jī)基礎(chǔ)1.2程序設(shè)計(jì)語言1.3Python語言1.4Python及PyCharm的安裝本章小結(jié)
1.1計(jì)
算
機(jī)
基
礎(chǔ)
1.1.1計(jì)算機(jī)硬件一般而言,計(jì)算機(jī)由運(yùn)算器、控制器、存儲(chǔ)器、輸入設(shè)備和輸出設(shè)備五大部件組成。每個(gè)部件都是一個(gè)功能相對(duì)完整的子系統(tǒng),各部件之間通過總線連接起來,實(shí)現(xiàn)數(shù)據(jù)的交換,如圖1-1所示。運(yùn)算器和控制器是計(jì)算機(jī)的核心部件,通常被集成到一個(gè)芯片中,稱為中央處理器(CentralProcessingUnit,CPU)。圖1-1計(jì)算機(jī)的硬件組成
1.運(yùn)算器
運(yùn)算器也稱算術(shù)邏輯單元(ArithmeticLogicUnit,ALU)。算術(shù)運(yùn)算指的是加、減、乘、除等數(shù)學(xué)運(yùn)算,邏輯運(yùn)算包括與(and)、或(or)、非(not)等邏輯操作。表1-1給出了邏輯與和邏輯或的運(yùn)算結(jié)果。
2.控制器
控制器是整個(gè)計(jì)算機(jī)中結(jié)構(gòu)最復(fù)雜的部件,用于指揮、協(xié)調(diào)計(jì)算機(jī)各部件工作。每種計(jì)算機(jī)都有一個(gè)最基本的指令集合,機(jī)器只能識(shí)別這個(gè)集合中的指令??刂破魇怯?jì)算機(jī)中唯一能夠識(shí)別這些二進(jìn)制指令的部件。
3.存儲(chǔ)器(內(nèi)存)
程序和數(shù)據(jù)以二進(jìn)制位(比特,bit)的形式存儲(chǔ)在存儲(chǔ)器中。程序是一個(gè)指令的序列,而指令是有著固定格式的比特串,其按順序存放,因此每一條指令都有一個(gè)序列號(hào),比如從0到n,存放在存儲(chǔ)器的特定位置。程序執(zhí)行時(shí),CPU每次從存儲(chǔ)器中取出一條指令執(zhí)行。此外,在程序執(zhí)行過程中,需要存儲(chǔ)一些中間結(jié)果和最終結(jié)果數(shù)據(jù),在計(jì)算機(jī)語言中這些數(shù)據(jù)稱為變量,存儲(chǔ)在存儲(chǔ)器中。
4.輸入設(shè)備和輸出設(shè)備
輸入設(shè)備方便用戶向計(jì)算機(jī)發(fā)送信息。鍵盤、鼠標(biāo)等都屬于輸入設(shè)備。比如,用戶通過鍵盤將信息發(fā)送給計(jì)算機(jī)。輸出設(shè)備負(fù)責(zé)將運(yùn)算結(jié)果發(fā)送到指定部件。屏幕就是典型的輸出設(shè)備。輸入設(shè)備和輸出設(shè)備統(tǒng)稱為外圍設(shè)備。
1.1.2計(jì)算機(jī)軟件
計(jì)算機(jī)上運(yùn)行的軟件可以分為系統(tǒng)軟件和應(yīng)用軟件兩大類。為生產(chǎn)、生活、娛樂、科研等用途而開發(fā)的軟件稱為應(yīng)用軟件,如財(cái)務(wù)管理軟件、電信服務(wù)軟件、工業(yè)控制軟件等。為了方便操作計(jì)算機(jī),或者為開發(fā)應(yīng)用軟件提供輔助目的而設(shè)計(jì)出的基礎(chǔ)軟件稱為系統(tǒng)軟件。典型的系統(tǒng)軟件包括操作系統(tǒng)、編譯系統(tǒng)、數(shù)據(jù)庫系統(tǒng)以及開發(fā)平臺(tái)(如EDA工具等集成環(huán)境)等。
操作系統(tǒng)是一種使用最為廣泛的系統(tǒng)軟件,它為用戶提供了一個(gè)良好的基礎(chǔ)操作平臺(tái),其他軟件都必須在操作系統(tǒng)的管理下運(yùn)行。
1.1.3計(jì)算機(jī)內(nèi)的數(shù)據(jù)表示
1.數(shù)據(jù)類型
在數(shù)據(jù)存儲(chǔ)和表示方面,計(jì)算機(jī)和人類存在較大的不同。一方面,計(jì)算機(jī)只能識(shí)別二進(jìn)制的數(shù)字,而用戶對(duì)于二進(jìn)制表示卻很不習(xí)慣;另一方面,計(jì)算機(jī)的存儲(chǔ)器容量雖然很大,但卻是有限的,并且每一個(gè)數(shù)據(jù)必須使用一個(gè)大小確定的存儲(chǔ)單元來加以存放,比如1字節(jié)或者4字節(jié)等。
2.字符和漢字的表示
多臺(tái)計(jì)算機(jī)之間、計(jì)算機(jī)和用戶之間都需要使用統(tǒng)一的編碼來表示符號(hào),這些符號(hào)包括英文字母、阿拉伯?dāng)?shù)字、標(biāo)點(diǎn)符號(hào)和其他一些特殊字符。美國信息交換標(biāo)準(zhǔn)代碼(AmericanStandardCodeforInformationInterchange,ASCII)是基于拉丁字母的一套電腦編碼系統(tǒng),主要用于編碼現(xiàn)代英語和其他西歐語言。它是最通用的信息交換標(biāo)準(zhǔn),等同于國際標(biāo)準(zhǔn)ISO/IEC646。
表1-2給出了部分字符的ASCII碼。
3.數(shù)值的表示
所有的數(shù)值數(shù)據(jù)在機(jī)器內(nèi)部都是由0和1組成的比特串來表示的。數(shù)值有正數(shù)、負(fù)數(shù)、整數(shù)、小數(shù)等,因此,在使用時(shí)我們需要做出約定來正確地表示數(shù)值。根據(jù)小數(shù)點(diǎn)的位置不同,可以把數(shù)值分為定點(diǎn)數(shù)和浮點(diǎn)數(shù)兩大類。定點(diǎn)數(shù)又可以分為定點(diǎn)整數(shù)和定點(diǎn)小數(shù)。如果約定小數(shù)點(diǎn)在整個(gè)比特串的最右邊,則是定點(diǎn)整數(shù);如果約定小數(shù)點(diǎn)在整個(gè)比特串的最左邊,則是定點(diǎn)小數(shù)。
1.1.4計(jì)算機(jī)的工作方式
計(jì)算機(jī)工作主要依賴于中央處理器和存儲(chǔ)器,中央處理器內(nèi)部包括控制器、運(yùn)算器和一些寄存器??刂破髫?fù)責(zé)整個(gè)程序的自動(dòng)執(zhí)行,運(yùn)算器用于算術(shù)運(yùn)算,寄存器用于臨時(shí)存儲(chǔ)一些數(shù)據(jù),包括初始值和中間運(yùn)算結(jié)果。存儲(chǔ)器用于存儲(chǔ)程序和數(shù)據(jù),這些數(shù)據(jù)可以是待處理的數(shù)據(jù)初始值、中間結(jié)果和最終結(jié)果。
下面以函數(shù)y?=?ax?+?b的計(jì)算過程為例詳細(xì)說明計(jì)算機(jī)的工作過程。表1-3給出了計(jì)算y?=?ax?+?b時(shí)存儲(chǔ)器的存儲(chǔ)情況。
1.2程序設(shè)計(jì)語言
語言是一種交流工具,一般把人類用來相互交流溝通的語言稱為自然語言,而把程序員指示計(jì)算機(jī)完成某件工作所用的語言稱為程序設(shè)計(jì)語言。所以,按照語言的用途來說,自然語言用于人與人的溝通,而程序設(shè)計(jì)語言則用于人與計(jì)算機(jī)的溝通。程序設(shè)計(jì)語言通過一系列的符號(hào)、單詞和語法規(guī)則,來幫助程序員表達(dá)和組織計(jì)算機(jī)程序。
1.2.1程序設(shè)計(jì)語言概述
語言可以看成是應(yīng)用語法規(guī)則對(duì)詞匯進(jìn)行組合而成的序列。用自然語言寫文章的過程和用程序設(shè)計(jì)語言編寫程序的過程相似。寫文章時(shí)首先是遣詞造句,然后將句子匯聚成段落,若干個(gè)段落構(gòu)成一篇完整的文章;而程序員是利用程序設(shè)計(jì)語言中的基本詞匯構(gòu)成語句,多條語句組織成函數(shù)或過程,若干個(gè)函數(shù)或過程構(gòu)成計(jì)算機(jī)程序。圖1-2展示了自然語言和程序設(shè)計(jì)語言的結(jié)構(gòu)層次對(duì)應(yīng)關(guān)系。圖1-2自然語言與程序設(shè)計(jì)語言的結(jié)構(gòu)層次對(duì)應(yīng)關(guān)系
如圖1-3所示,在人與硬件機(jī)器之間,人們?cè)O(shè)計(jì)了一種編譯器軟件。圖1-3編譯器成為人-機(jī)之間的翻譯
計(jì)算機(jī)不能直接執(zhí)行高級(jí)語言編寫的程序,需要將高級(jí)語言程序翻譯成目標(biāo)程序才能執(zhí)行。這種“翻譯”通常有兩種方式:編譯方式和解釋方式。編譯方式是將程序中的所有代碼作為一個(gè)整體來對(duì)待,編譯通過后才能執(zhí)行。解釋方式則是對(duì)程序語言逐條解釋并執(zhí)行,當(dāng)遇到錯(cuò)誤時(shí),則會(huì)停止工作,待錯(cuò)誤修正后再繼續(xù)運(yùn)行。一般而言,在程序編譯過程中,編譯方式和解釋方式各有優(yōu)缺點(diǎn)。
編譯方式的優(yōu)點(diǎn)在于:
(1)執(zhí)行速度快。
(2)安全性高。
編譯方式的缺點(diǎn)有:
(1)平臺(tái)依賴性。
(2)調(diào)試不方便。
(3)開發(fā)效率低。
編譯方式的缺點(diǎn)有:
(1)平臺(tái)依賴性。
(2)調(diào)試不方便。
(3)開發(fā)效率低。
解釋方式的優(yōu)點(diǎn)有:
(1)跨平臺(tái)性。
(2)調(diào)試容易。
(3)靈活性。
(4)開發(fā)效率高。
解釋方式的缺點(diǎn)有:
(1)執(zhí)行速度慢。
(2)安全性低。
(3)占用資源。
總的來說,編譯方式和解釋方式各有其優(yōu)缺點(diǎn),適用于不同的場(chǎng)景。編譯方式適用于對(duì)執(zhí)行速度和安全性要求較高的場(chǎng)景,而解釋方式則更適用于需要跨平臺(tái)性和靈活性的場(chǎng)景。在實(shí)際應(yīng)用中,可以根據(jù)具體需求選擇合適的編譯方式或解釋方式。
1.2.2程序設(shè)計(jì)語言的成分
程序設(shè)計(jì)語言一般包括三個(gè)層次的成分:詞法、句法和程序,每一個(gè)成分都有語法和語義兩個(gè)方面的含義。與復(fù)雜的自然語言相比,每一個(gè)成分都更簡單和確定,不存在任何二義性。
詞法包括關(guān)鍵字、變量、常量、運(yùn)算符和數(shù)值等。關(guān)鍵字是為表達(dá)某個(gè)特定用途而保留識(shí)別的英文單詞,每一種語言都有自己定義的一個(gè)保留字集合。變量是為了存放在程序運(yùn)行過程中獲得的中間結(jié)果和最終結(jié)果的存儲(chǔ)單元,其名稱由程序員自行定義,稱為標(biāo)識(shí)符。每一個(gè)變量名稱實(shí)際上都是內(nèi)存地址的別名,以便于程序員記憶。程序設(shè)計(jì)語言中的運(yùn)算符和數(shù)值與自然語言中的沒有太多區(qū)別。
基本的程序語句有多種,如賦值語句、控制語句、函數(shù)調(diào)用等。賦值語句中賦值符號(hào)的左邊必須是變量;而函數(shù)則由若干條語句序列組成,便于多次調(diào)用,函數(shù)調(diào)用前必須先進(jìn)行定義或聲明,這可以由程序員自行實(shí)現(xiàn),也可以由第三方人員實(shí)現(xiàn)。這些語句按照順序、分支和循環(huán)三種結(jié)構(gòu)構(gòu)成程序,其中分支結(jié)構(gòu)根據(jù)判斷條件選擇其中的一個(gè)分支加以執(zhí)行,循環(huán)結(jié)構(gòu)則可以多次執(zhí)行循環(huán)中的語句序列。
1.3Python語言
1.3.1Python發(fā)展簡史
1.起源與早期發(fā)展
1989年圣誕節(jié)期間,荷蘭計(jì)算機(jī)科學(xué)家GuidovanRossum受到ABC語言的啟發(fā),開始設(shè)計(jì)Python。1991年,首個(gè)Python編譯器被創(chuàng)造出來,并以英國喜劇團(tuán)體MontyPython’sFlyingCircus命名,這標(biāo)志著Python語言的正式誕生。1994年,Python1.0發(fā)布,其引入了lambda、map、filter等函數(shù)式編程特性,以及對(duì)模塊和包的支持。
2.?Python2.x時(shí)代
2000年,Python2.0發(fā)布,其引入的許多新特性奠定了Python2.x系列的基礎(chǔ),包括增強(qiáng)的類支持、列表推導(dǎo)式、垃圾回收機(jī)制、Unicode支持、迭代器和生成器等。Python2.x系列不斷引入新的特性,如Python2.4引入了裝飾器和生成器表達(dá)式,Python2.5引入了with語句和條件表達(dá)式。Python2.7是這一時(shí)代的最后一個(gè)版本。
3.?Python3.x時(shí)代
2008年12月3日,Python3.0發(fā)布,帶來了重大革新,如去除了經(jīng)典類,只支持新式類;統(tǒng)一了整數(shù)和長整數(shù)類型;改進(jìn)了Unicode字符串支持;print成為函數(shù)等。
4.社區(qū)與生態(tài)系統(tǒng)
Python社區(qū)迅速壯大,形成了豐富的開源項(xiàng)目和第三方庫生態(tài)。
5.未來發(fā)展
Python在繼續(xù)發(fā)展,并不斷添加新的功能。
1.3.2Python的特點(diǎn)
1.高級(jí)的內(nèi)建類型
伴隨著每一代編程語言的產(chǎn)生,程序員的編程效率都會(huì)達(dá)到一個(gè)新的高度。
2.面向?qū)ο?/p>
面向?qū)ο缶幊虨閿?shù)據(jù)和邏輯相分離的結(jié)構(gòu)化和過程化編程添加了新的活力。
3.升級(jí)簡便
Python代碼乍看起來與批處理或UNIX系統(tǒng)下的Shell有些類似。
4.良好的可擴(kuò)展性
對(duì)于程序項(xiàng)目中大量的Python代碼,可以通過將其分離為多個(gè)文件或模塊加以組織管理。而且程序員可以從一個(gè)模塊中選取代碼,而從另一個(gè)模塊中讀取屬性,并且對(duì)于所有的模塊,Python的訪問語法都是相同的。對(duì)于特別強(qiáng)調(diào)性能部分的代碼,可以用C語言重寫后再作為Python的擴(kuò)展。需要強(qiáng)調(diào)的是,重寫后的代碼接口和純Python模塊的接口完全相同,代碼和對(duì)象的訪問方法也相同,但這些代碼顯著提升了整體性能。
5.易學(xué)易讀
Python的語法非常簡潔,無需像其他編程語言那樣記憶大量的復(fù)雜語法和規(guī)則。
6.移植性強(qiáng)
Python是一種跨平臺(tái)語言,能在多種操作系統(tǒng)上運(yùn)行。
1.3.3IDLE集成開發(fā)環(huán)境
1.主要功能
(1)代碼編輯器:支持語法高亮、自動(dòng)縮進(jìn)和代碼補(bǔ)全,為編程提供了便捷的體驗(yàn)。其類似于VisualStudio和Eclipse等IDE,但更加輕量級(jí)和易于使用。
(2)交互式解釋器:在Shell窗口中,用戶可以交互式地運(yùn)行Python代碼,并能快速獲取運(yùn)行結(jié)果。Shell窗口提供了比基本的交互命令提示符更好的剪切、粘貼等功能。
(3)調(diào)試工具:具備設(shè)置斷點(diǎn)、單步調(diào)試等調(diào)試工具,便于查找和解決代碼中的錯(cuò)誤,為開發(fā)者提供了強(qiáng)大的調(diào)試支持。
2.使用方式
(1)交互式編程:用戶可以在Shell中直接輸入Python代碼并立即看到運(yùn)行結(jié)果。
(2)文件編輯模式(腳本模式):用戶可以在文件編輯器中編寫Python代碼,并保存到文件中,然后通過運(yùn)行該文件來執(zhí)行代碼。這種模式更適合于編寫較長或較為復(fù)雜的Python代碼,并且可以通過函數(shù)、模塊等方式將代碼組織成更為結(jié)構(gòu)化的形式。
3.安裝與打開
安裝Python時(shí),IDLE會(huì)自動(dòng)安裝,無須單獨(dú)安裝。
打開IDLE的方法有以下兩種:
(1)在命令行中輸入“python”(或“python3”)后按回車鍵(在Windows操作系統(tǒng)下使用命令提示符,在macOS或Linux操作系統(tǒng)下使用終端)。
(2)在圖形界面中雙擊IDLE圖標(biāo)(通常位于Python安裝目錄下的Scripts文件夾中)。
圖1-4展示了IDLEShell3.10.10的交互式窗口。圖1-4IDLEShell3.10.10交互式窗口
1.3.4Python的工作方式
1.交互方式
首先在Windows操作系統(tǒng)的“開始”菜單中找到“Python3.10”菜單目錄并展開,如圖1-5所示,然后選擇“IDLE(Python3.1064-bit)”選項(xiàng),打開IDLE。也可以直接在桌面左下角的“搜索”中輸入命令“IDLE”打開IDLE,結(jié)果如圖1-6所示。圖1-5從“開始”菜單中打開IDLE圖1-6體驗(yàn)交互式輸出文字
在圖1-6所示的IDLE中,界面上方是Python語言解釋器程序的版本信息,下面的“>>>”稱為提示符。在提示符“>>>”后輸入如下代碼,并按回車鍵,觀察解釋器窗口的變化。
>>>print("大家好,歡迎來到Python課堂!")
注意:Python對(duì)大小寫是敏感的,在輸入命令時(shí)大小寫必須嚴(yán)格按照上面的命令形式,特別是引號(hào)(""),不能使用中文中的引號(hào)(“”),中文或全角字符只能出現(xiàn)在英文引號(hào)("")之間或者是注釋中。
如圖1-7所示,嘗試輸入幾行代碼。其中:輸入代碼“1?+?2?+?4?+?8”被解釋器接受,并成功顯示結(jié)果“15”;輸入代碼給變量pi賦值也被接受;而輸入“Python你好”,解釋器拒絕解釋執(zhí)行,并用紅色文字給出錯(cuò)誤提示信息。圖1-7Python只接受能理解的指令
2.文件方式
(1)在IDLE菜單欄中打開“File”菜單,選擇第一項(xiàng)“NewFile”,此時(shí)系統(tǒng)會(huì)創(chuàng)建一個(gè)新的窗口,其中的空白區(qū)域用來編輯代碼內(nèi)容;輸入圖1-8中的代碼,執(zhí)行“File”→“Saveas…”命令,將其保存為一個(gè)文件,命名為“pwd.py”。這樣就創(chuàng)建了第一個(gè)Python語言腳本文件。圖1-8在文本編輯窗口中輸入代碼
(2)在文本編輯器的“Run”菜單中選擇“RunModule”命令,或者直接使用快捷鍵F5,執(zhí)行這個(gè)文件中所有的代碼。
如圖1-9所示,執(zhí)行結(jié)果出現(xiàn)在IDLE的Shell窗口中。輸入的密碼“1234567”與正確密碼“123456”不符,所以顯示“Errorpassword”。圖1-9執(zhí)行pwd.py中的代碼
1.3.5Python的應(yīng)用領(lǐng)域
Python的應(yīng)用領(lǐng)域非常廣泛,以下是一些主要的應(yīng)用領(lǐng)域。
1.?Web應(yīng)用開發(fā)
2.數(shù)據(jù)分析與可視化
3.人工智能與機(jī)器學(xué)習(xí)
4.自動(dòng)化運(yùn)維
5.網(wǎng)絡(luò)爬蟲
6.科學(xué)計(jì)算
7.游戲開發(fā)
1.4Python及PyCharm的安裝
1.4.1Windows下Python的安裝
Python是一種跨平臺(tái)的語言,可以在Windows和Linux等多種操作系統(tǒng)下使用,這里只介紹Windows平臺(tái)下的安裝,使用Linux的用戶可以查閱其他資料自行處理。
Windows下Python的安裝步驟如下:
(1)打開/download,選擇“download”菜單項(xiàng)下的“Allreleases”項(xiàng),再選擇相應(yīng)的版本下載。本書采用的版本是3.10.10。如果想體驗(yàn)最新版本,可以選擇“downloadpython3.12.3”。
(2)鼠標(biāo)雙擊打開安裝包,在彈出窗口的最下方勾選“InstallLauncherforallUsers(recommended)”和“AddPython3.10toPATH”,然后點(diǎn)擊“Next”;勾選“Option”頁面中的全部選項(xiàng),繼續(xù)點(diǎn)擊“Next”;在“AdvancedOption”頁面中勾選前5個(gè)選項(xiàng),并選擇安裝路徑,最后點(diǎn)擊“Install”。注意:在最后安裝結(jié)束的頁面中,我們可以點(diǎn)擊“disablepathlengthlimit”禁用系統(tǒng)路徑長度限制,這將會(huì)在以后的使用中省去很多麻煩。
(3)安裝結(jié)束后,在系統(tǒng)中按下Win?+?R,輸入“cmd”后回車,進(jìn)入command命令行模式;然后輸入“python--version”進(jìn)行驗(yàn)證,若出現(xiàn)Python?+?版本號(hào),則說明安裝成功,如圖1-10所示。圖1-10Python安裝成功驗(yàn)證
1.4.2PyCharm的安裝
與IDLE相比,PyCharm的功能更加強(qiáng)大,增加了項(xiàng)目管理等功能,適合更大規(guī)模的多模塊軟件開發(fā),其主要功能包括編碼協(xié)助、項(xiàng)目代碼導(dǎo)航、代碼分析、Python代碼重構(gòu)、支持Django框架和支持GoogleApp、圖形頁面調(diào)試以及集成單元測(cè)試等。其使用相對(duì)也更復(fù)雜,熟練掌握后能大幅提高代碼開發(fā)效率。PyCharm3.13開發(fā)界面如圖1-11所示。本書中開發(fā)的實(shí)例都是在IDLE中完成的,有興趣的讀者也可以選擇使用PyCharm。圖1-11PyCharm3.13開發(fā)界面
1.?PyCharm3.10的安裝
安裝步驟如下:
(1)訪問官網(wǎng)/pycharm/download/#section=windows,下載“社區(qū)版Community”安裝包。
(2)雙擊安裝包,進(jìn)行安裝。建議不要把安裝目錄放置在系統(tǒng)盤(C盤),而是另外選擇一個(gè)目錄如d:\pycharm310。在Options安裝界面勾選“Add‘bin’FoldertothePATH”,保證把安裝目錄添加到系統(tǒng)搜索路徑的變量中去。
2.第三方庫的安裝
(1)?NumPy:用于科學(xué)計(jì)算和數(shù)值分析。
2)?Pandas:用于數(shù)據(jù)分析和數(shù)據(jù)預(yù)處理。
(3)?Matplotlib:用于數(shù)據(jù)可視化和繪圖。
(4)?TensorFlow:用于機(jī)器學(xué)習(xí)和人工智能。
(5)?Scikit-learn:用于機(jī)器學(xué)習(xí)和數(shù)據(jù)挖掘。
(6)?Flask和Django:用于Web應(yīng)用程序開發(fā)。
(7)?Request:用于HTTP請(qǐng)求和API調(diào)用。
(8)?BeautifulSoup:用于網(wǎng)頁解析和數(shù)據(jù)抽取。
(9)?Pygame:用于游戲開發(fā)。
這些庫的安裝非常簡單,安裝好PyCharm后打開,從“File”→“settings...”菜單項(xiàng)進(jìn)入安裝,在搜索框中選擇需要添加的第三方庫,點(diǎn)擊“安裝”即可。也可用命令行的形式安裝。首先打開命令行,如果沒有安裝pip(管道),先要在系統(tǒng)的命令行方式下鍵入以下命令安裝pip:
python-mensurepip--default-pip
在Windows平臺(tái)上,pip通常會(huì)與Python一起安裝。如果使用的是Python3.4及以上版本,pip應(yīng)該已經(jīng)安裝好了;如果沒有,可以從Python的官網(wǎng)上下載和安裝最新版本的Python,此版本包括pip。
接著安裝需要的庫。例如,安裝Flask庫時(shí)應(yīng)鍵入:
pipinstallFlask
然后,到官網(wǎng)去查找Flask庫并下載,如圖1-12所示。圖1-12用pip命令安裝Flask庫
本
章
小
結(jié)
本章首先介紹了學(xué)習(xí)計(jì)算機(jī)語言所需的計(jì)算機(jī)基礎(chǔ)知識(shí),主要包括計(jì)算機(jī)的硬件組成、軟件作用與分類、數(shù)據(jù)表示,并結(jié)合一個(gè)代數(shù)求值的計(jì)算程序?qū)嵗唵侮U述了計(jì)算機(jī)程序自動(dòng)執(zhí)行的基本原理;然后簡述了程序設(shè)計(jì)語言的一般概念,并將程序設(shè)計(jì)語言和自然語言進(jìn)行了對(duì)比,使初學(xué)者對(duì)將要學(xué)習(xí)的程序設(shè)計(jì)語言有一個(gè)粗略的了解;接著介紹了Python語言的發(fā)展簡史,著重講述了Python的特點(diǎn),并介紹了它的應(yīng)用領(lǐng)域;最后簡述了Python和PyCharm的安裝方法。第2章Python基本語法2.1引例2.2標(biāo)識(shí)符與命名規(guī)則2.3變量與賦值2.4數(shù)據(jù)的輸入和輸出2.5數(shù)值2.6字符串2.7字符串格式化本章小結(jié)
2.1引
例
【例2-1】
計(jì)算矩形面積。通過用戶輸入獲取矩形的長度和寬度,然后計(jì)算并打印面積?!緟⒖即a】
運(yùn)行上述代碼,得到如下結(jié)果:
對(duì)于上述計(jì)算矩形面積的Python程序,我們可以通過以下詳細(xì)步驟來理解其編程邏輯。
步驟1:明確問題。
步驟2:獲取用戶輸入。
步驟3:計(jì)算面積。
步驟4:顯示結(jié)果。
步驟5:測(cè)試和驗(yàn)證。
上述過程展示了解決一個(gè)簡單編程問題的邏輯。通過明確問題、收集必要信息(通過用戶輸入)、處理這些信息(通過計(jì)算和轉(zhuǎn)換)、將處理后的信息(結(jié)果)反饋給用戶,我們可以逐步解決更復(fù)雜的問題。這個(gè)過程也強(qiáng)調(diào)了編程的基本要素:變量聲明與賦值、輸入/輸出操作、數(shù)據(jù)類型轉(zhuǎn)換、數(shù)學(xué)運(yùn)算以及結(jié)果展示。通過理解這些基礎(chǔ)概念,在后面的學(xué)習(xí)中,我們可以編寫更復(fù)雜的程序來解決實(shí)際問題。
Python是一種非常注重可讀性的編程語言,其基本書寫規(guī)則旨在確保代碼清晰、簡潔。遵循這些規(guī)則能夠讓我們的代碼更易于維護(hù),同時(shí)也能夠減少因?yàn)檎Z法錯(cuò)誤或格式不當(dāng)導(dǎo)致的問題。
(1)雖然上述例子中沒有展示縮進(jìn),但是,在Python中,代碼縮進(jìn)是非常重要的。Python使用縮進(jìn)來表示代碼塊,不同于其他使用大括號(hào)的語言。標(biāo)準(zhǔn)的縮進(jìn)為每級(jí)4個(gè)空格。縮進(jìn)的一致性對(duì)于保持代碼的結(jié)構(gòu)及可讀性非常關(guān)鍵。
(2)從第一列開始,前面不能有任何空格,否則會(huì)產(chǎn)生語法錯(cuò)誤。注意:注釋語句可以從任意位置開始;復(fù)合語句構(gòu)造體必須縮進(jìn)。在Python中,復(fù)合語句是指那些包含其他語句的語句,它們擴(kuò)展了簡單語句的功能。復(fù)合語句通常用于控制程序的流程,進(jìn)行數(shù)據(jù)的條件處理、循環(huán)處理等。
(3)在Python程序中,通常一行書寫一條語句,如果一行內(nèi)有多條語句,語句之間要求使用分號(hào)分隔。如果一條語句過長,可以使用反斜線“\”來實(shí)現(xiàn)分行書寫功能。在?()、[]、{}?內(nèi)的跨行語句,也被視為一行語句。例如:
(4)在Python程序中,添加注釋是非常必要的。注釋以“#”開始,對(duì)復(fù)雜的代碼塊和操作使用注釋,用來說明其功能或目的。單行注釋使用“#”,而多行注釋可以用三引號(hào)“'''”或“"""”包裹。
(5)在Python程序中,所有語法相關(guān)的符號(hào),包括冒號(hào)“:”、單引號(hào)“'”、雙引號(hào)“"”以及小括號(hào)“()”等,都應(yīng)當(dāng)使用英文輸入法進(jìn)行輸入,除非這些符號(hào)位于字符串之內(nèi)。
2.2標(biāo)識(shí)符與命名規(guī)則
2.2.1標(biāo)識(shí)符在Python中,包、模塊、函數(shù)、類、變量等的名稱必須是有效的標(biāo)識(shí)符。標(biāo)識(shí)符在定義時(shí),需遵循以下命名規(guī)則。
(1)標(biāo)識(shí)符的第一個(gè)字符必須是字母(大寫或小寫)或下劃線(_)。
(2)標(biāo)識(shí)符的其余部分可以由字母、下劃線(_)或數(shù)字(0~9)組成。
(3)標(biāo)識(shí)符在Python中是區(qū)分大小寫的。例如,variable、Variable和VARIABLE是三個(gè)不同的標(biāo)識(shí)符。
(4)標(biāo)識(shí)符不能是Python的保留關(guān)鍵字。Python的保留關(guān)鍵字是該語言保留的單詞,擁有專門的編程意義(如if、for、class等,見后文)。
(5)標(biāo)識(shí)符應(yīng)盡量具有描述性。例如,使用name或user_age比使用n或a更有意義。
(6)?Python3以后的版本支持Unicode字符作為標(biāo)識(shí)符,但最好避免使用,特別是在代碼共享或國際化環(huán)境中。
2.2.2保留關(guān)鍵字
在Python中,關(guān)鍵字是一些預(yù)先保留的具有特殊語法意義的標(biāo)識(shí)符。這些關(guān)鍵字定義了Python語言的規(guī)則和結(jié)構(gòu),不能用作變量名、函數(shù)名或任何其他標(biāo)識(shí)符的名稱,否則會(huì)產(chǎn)生編譯錯(cuò)誤。
每個(gè)關(guān)鍵字都有其特定的用途和意義,例如用于定義循環(huán)的for和while,用于條件判斷的if、elif和else,以及用于定義函數(shù)的def等。
Python3的關(guān)鍵字如表2-1所示。
在Python中,使用幫助系統(tǒng)可以查看系統(tǒng)關(guān)鍵字。Python提供了一個(gè)內(nèi)置的幫助系統(tǒng),可通過幾種不同的方式訪問,幫助我們查詢關(guān)鍵字、函數(shù)、模塊等信息。下面是使用Python的幫助系統(tǒng)來查看系統(tǒng)關(guān)鍵字的具體步驟和示例。
(1)運(yùn)行Python內(nèi)置集成開發(fā)環(huán)境IDLE。
(2)進(jìn)入幫助系統(tǒng)。當(dāng)Python解釋器啟動(dòng)后,輸入help()命令以進(jìn)入Python的內(nèi)置幫助系統(tǒng)。
(3)搜索關(guān)鍵字。在幫助模式中,輸入keywords命令來查看所有的Python關(guān)鍵字。
(4)獲取特定關(guān)鍵字的幫助信息。如果想要獲得特定關(guān)鍵字的詳細(xì)信息,可以直接查詢?cè)撽P(guān)鍵字。例如,如果我們想了解def關(guān)鍵字的用法,可以在幫助系統(tǒng)的提示符后輸入def。
(5)退出幫助系統(tǒng)。查看完所需信息后,輸入quit命令退出幫助系統(tǒng)。
2.3變
量
與
賦
值
2.3.1變量在計(jì)算機(jī)程序中,被存儲(chǔ)和操作的信息通常被稱作數(shù)據(jù)。這些數(shù)據(jù)根據(jù)其類型以不同的方式被處理和存儲(chǔ)。數(shù)據(jù)類型不僅定義了數(shù)據(jù)的屬性,還規(guī)定了可以對(duì)數(shù)據(jù)執(zhí)行的操作。在Python中,變量是用來存儲(chǔ)數(shù)據(jù)值的標(biāo)識(shí)符,它們指向內(nèi)存中保存數(shù)據(jù)的位置。也就是說,所有變量都是用來標(biāo)識(shí)對(duì)象或引用對(duì)象的。變量的命名必須遵循標(biāo)識(shí)符命名規(guī)則,例2-1中的length、width和area均為變量。
1.創(chuàng)建變量
在Python中創(chuàng)建變量非常簡單,無需事先聲明變量的類型,只需要給變量賦值即可自動(dòng)創(chuàng)建。例如:
這里,x是一個(gè)整型變量,y是一個(gè)字符串型變量,z是一個(gè)浮點(diǎn)型變量。
2.變量的特點(diǎn)
Python是一種動(dòng)態(tài)類型語言,不需要在聲明變量時(shí)指定其數(shù)據(jù)類型。數(shù)據(jù)類型會(huì)在運(yùn)行時(shí)根據(jù)賦予變量的值自動(dòng)確定。這意味著變量的類型可以在運(yùn)行時(shí)改變。例如,可以先將一個(gè)變量賦值為整數(shù),然后再賦值為字符串。
上述代碼中,首先將x定義為一個(gè)整數(shù),然后再將同一個(gè)x變量定義為一個(gè)字符串。Python允許變量類型的動(dòng)態(tài)更改。
需要注意的是,Python也是一種強(qiáng)類型語言,雖然變量的類型可以動(dòng)態(tài)改變,但在特定的操作中,Python會(huì)根據(jù)變量的類型進(jìn)行嚴(yán)格的類型檢查。例如,不能將字符串和整數(shù)直接相加。
2.3.2變量賦值
在Python中,變量的賦值操作是將一個(gè)值綁定到一個(gè)變量名上的過程。變量的賦值使用等號(hào)“=”來進(jìn)行。等號(hào)左邊是變量名,右邊是要賦給變量的值。例如,創(chuàng)建一個(gè)名為a的變量,并給它賦值10,可以簡單地寫為:
這行代碼創(chuàng)建了一個(gè)整數(shù)類型(int)的變量a,并將其值設(shè)置為10。接下來,a可以用在任何需要整數(shù)值的地方,并且它的值可以被修改。
在Python中可以使用多種不同的方法來分配和修改變量的值。下面是一些基本的變量賦值。
1.簡單賦值
簡單賦值是最基礎(chǔ)的賦值方式,即將一個(gè)值賦給一個(gè)變量。其語法格式為:
2.鏈?zhǔn)劫x值
鏈?zhǔn)劫x值是一種同時(shí)將同一個(gè)值賦給多個(gè)變量的快捷方式。其語法格式為:
上述代碼使得a、b、和c三個(gè)變量都指向同一個(gè)整數(shù)對(duì)象100。
3.多重賦值
多重賦值允許在一個(gè)語句中為多個(gè)變量分別賦予不同的值,這種賦值方式在Python中非常有用,特別是當(dāng)我們需要交換兩個(gè)變量的值,或者一次性初始化多個(gè)變量時(shí)。其語法格式為:
4.解包賦值
還有一種賦值,稱為解包賦值(unpacking),它允許從序列(如列表或元組)中提取值并直接賦給多個(gè)變量。
2.4數(shù)據(jù)的輸入和輸出
2.4.1輸入函數(shù)input()
input()函數(shù)用于從標(biāo)準(zhǔn)輸入(即鍵盤)接收用戶的輸入。該函數(shù)可以接收一個(gè)字符串參數(shù),該參數(shù)是在等待輸入時(shí)顯示的提示信息(也稱為提示符)。用戶輸入的內(nèi)容在按下Enter鍵后被讀取并作為函數(shù)的返回值,以字符串的形式返回。如果需要將用戶輸入的內(nèi)容轉(zhuǎn)換為其他類型,如整數(shù)或列表,需要配合使用類型轉(zhuǎn)換函數(shù),例如int()、float(),或者通過其他方式轉(zhuǎn)換。
【例2-6】input()函數(shù)示例。
【例2-7】
實(shí)現(xiàn)一個(gè)簡單的計(jì)算器。
【參考代碼】
上述代碼的運(yùn)行結(jié)果如下:
2.4.2輸出函數(shù)print()
在Python3中,print()函數(shù)是最常用的內(nèi)置函數(shù)之一,其主要用途是在控制臺(tái)輸出信息。該函數(shù)非常靈活,能夠輸出各種不同類型的數(shù)據(jù),包括字符串、整數(shù)、浮點(diǎn)數(shù)、對(duì)象等。
print()函數(shù)的最基本用法是將傳遞給它的參數(shù)輸出到標(biāo)準(zhǔn)輸出(通常是屏幕)。如果傳入多個(gè)參數(shù),它們將默認(rèn)以空格分隔,例如:
print()函數(shù)具有幾個(gè)重要的可選參數(shù),這些參數(shù)增強(qiáng)了其輸出能力。例如,sep參數(shù)定義用來分隔多個(gè)值的字符串,默認(rèn)為一個(gè)空格。end參數(shù)定義輸出后添加的字符串,默認(rèn)為換行符“\n”。例2-8和例2-9列舉了這些參數(shù)的具體使用方法。
【例2-8】print()函數(shù)示例。
【例2-9】print()中end參數(shù)的使用。
2.5數(shù)
值2.5.1數(shù)值類型
1.整數(shù)在Python中,整數(shù)類型用來表示沒有小數(shù)部分的數(shù),包括正數(shù)、負(fù)數(shù)和零,使用int類型來表示。Python中的整數(shù)沒有固定的大小限制,這意味著,理論上,只要計(jì)算機(jī)內(nèi)存足夠,就能處理任意大小的整數(shù)。
Python不僅支持十進(jìn)制數(shù)的表示方式,還支持二進(jìn)制(以0b或0B開頭)、八進(jìn)制(以0o或0O開頭)和十六進(jìn)制(以0x或0X開頭)的表示方式。
【例2-10】
整數(shù)類型示例。
2.浮點(diǎn)數(shù)
浮點(diǎn)數(shù)是帶小數(shù)的數(shù)字。Python中的浮點(diǎn)數(shù)使用float類型來表示。在Python中,浮點(diǎn)數(shù)是使用雙精度(64位)來存儲(chǔ)的。這意味著它可以提供大約16位的十進(jìn)制精度。具體來說,浮點(diǎn)數(shù)的存儲(chǔ)分為三個(gè)部分:符號(hào)位(用于表示正負(fù))、指數(shù)位和尾數(shù)位(或稱為小數(shù)位)。該存儲(chǔ)方式允許float表示非常大和非常小的數(shù),但這是有上下限的。當(dāng)數(shù)值超過這個(gè)范圍時(shí),會(huì)使用“inf”(無窮大)或“-inf”(負(fù)無窮大)來表示。
【例2-11】
浮點(diǎn)數(shù)類型示例。
3.復(fù)數(shù)
復(fù)數(shù)是表示實(shí)數(shù)和虛數(shù)部分的數(shù)。復(fù)數(shù)在Python中是用complex類型表示的。一個(gè)復(fù)數(shù)由兩部分組成:一個(gè)實(shí)部和一個(gè)虛部,通??杀硎緸閍?+?bj。
在Python中,復(fù)數(shù)可以直接通過將一個(gè)實(shí)數(shù)和一個(gè)虛數(shù)加在一起創(chuàng)建,或者使用內(nèi)置的complex(real,imag)函數(shù)創(chuàng)建。
【例2-12】
復(fù)數(shù)類型示例。
一旦創(chuàng)建了復(fù)數(shù),用戶可以使用?.real和?.imag屬性來訪問它的實(shí)部和虛部。例如:
4.布爾值
Python中的布爾(Boolean)類型是一種基礎(chǔ)數(shù)據(jù)類型,用于表示真值或假值。布爾類型有兩個(gè)值:True和False。需要注意的是,在Python中,True和False是關(guān)鍵字,并且是整數(shù)1和0的別名,因此它們也可以參與數(shù)值運(yùn)算。
【例2-13】
布爾類型示例。
2.5.2數(shù)值類型的操作
Python提供了豐富的內(nèi)置操作來處理數(shù)值類型的數(shù)據(jù)(例如整數(shù)、浮點(diǎn)數(shù)、復(fù)數(shù))。
1.內(nèi)置數(shù)值運(yùn)算操作符
Python內(nèi)置了一系列數(shù)值運(yùn)算符,這些運(yùn)算符允許執(zhí)行基本的數(shù)學(xué)運(yùn)算,如加法、減法、乘法等,以及更復(fù)雜的操作,如冪運(yùn)算等。表2-2是Python中常用的數(shù)值運(yùn)算符的詳細(xì)描述和實(shí)例。
擴(kuò)展的算術(shù)運(yùn)算符(也稱為復(fù)合賦值運(yùn)算符)提供了一種便捷的方式來修改變量的值,并且這種修改是基于原始值和某個(gè)操作的結(jié)果。這些運(yùn)算符結(jié)合了基本的算術(shù)運(yùn)算(如加法、減法、乘法等)和賦值操作,使得代碼更加簡潔、易讀。擴(kuò)展的算術(shù)運(yùn)算符如表2-3所示。
【例2-14】
數(shù)值運(yùn)算操作符示例。
【例2-15】
假設(shè)投資1000元(P?=?1000),年利率為5%(r?=?0.05),利息每年計(jì)算一次(n?=?1),投資期限為10年(t?=?10)。請(qǐng)計(jì)算10年后的投資價(jià)值。
【參考代碼】
2.內(nèi)置的數(shù)值運(yùn)算函數(shù)
Python不僅提供了數(shù)值運(yùn)算操作符,還內(nèi)置了一些用于數(shù)學(xué)計(jì)算的函數(shù)。這些函數(shù)可以對(duì)數(shù)字進(jìn)行處理,如求絕對(duì)值、四舍五入等操作。表2-4是Python中一些常用的內(nèi)置數(shù)值運(yùn)算函數(shù)的功能描述及示例。
【例2-16】
已知三次考試成績,請(qǐng)計(jì)算平均成績,要求四舍五入到小數(shù)點(diǎn)后一位。并求出三次考試的最高和最低成績。
【參考代碼】
運(yùn)行結(jié)果為:
2.5.3math庫的使用
1.導(dǎo)入math庫
在Python中,我們可以通過簡單的導(dǎo)入語句“importmath”來使用math模塊。例如:
還有一種寫法是:“frommathimport*”,或者,如果我們只需要使用特定的幾個(gè)函數(shù),也可以選擇性地通過“frommathimport<函數(shù)名>”導(dǎo)入這些函數(shù)。例如:
2.?math庫中主要數(shù)學(xué)函數(shù)和常量
表2-5和表2-6分別列出了math模塊中的常量和部分重要的數(shù)值函數(shù),以及它們的簡單描述和數(shù)學(xué)形式。
【例2-17】math庫的主要函數(shù)示例。
【例2-18】
計(jì)算三角形的面積。假設(shè)有一個(gè)三角形,已知其三邊長度分別為a、b和c,用海倫公式來計(jì)算這個(gè)三角形的面積。
【參考代碼】
【例2-19】
編寫一個(gè)Python程序,求解一元二次方程的實(shí)數(shù)根。
【參考代碼】
程序運(yùn)行后,可得如下結(jié)果:
2.6字
符
串
2.6.1字符串類型
Python中的字符串(String)類型是一種用來處理文本的數(shù)據(jù)類型。在Python中,字符串是不可變的序列類型,這意味著一旦創(chuàng)建字符串,其內(nèi)容就不可更改。字符串可以包含字母、數(shù)字、符號(hào)和空格,Python使用單引號(hào)、雙引號(hào)和三雙引號(hào)作為定界符來表示字符串,不同的定界符之間可以相互嵌套。
【例2-20】
字符串類型示例。
2.6.2字符串的基本操作
(1)連接:使用“+”操作符可以連接兩個(gè)或多個(gè)字符串。例如:
(2)重復(fù):使用“*”操作符可以重復(fù)字符串多次。例如:
(3)索引:字符串索引是訪問字符串中單個(gè)字符的方法。在Python中,字符串被視為字符序列,每個(gè)字符在序列中都有一個(gè)確定的位置,即索引。索引可以是正數(shù),也可以是負(fù)數(shù)。使用正數(shù)索引時(shí),計(jì)數(shù)從0開始;使用負(fù)數(shù)索引時(shí),計(jì)數(shù)從?-1開始,表示字符串的最后一個(gè)字符。
【例2-21】
字符串索引示例。
(4)切片:除了使用索引訪問單個(gè)字符外,還可以通過切片操作獲取子字符串,切片通過指定開始索引和結(jié)束索引的方式來實(shí)現(xiàn),語法為[開始索引:結(jié)束索引]。在切片操作中,返回的子字符串包含開始索引對(duì)應(yīng)的字符,但不包含結(jié)束索引對(duì)應(yīng)的字符。
【例2-22】
字符串切片示例。
2.6.3字符串的內(nèi)置方法
Python提供了一系列內(nèi)置方法來進(jìn)行字符串處理和查詢。下面將詳細(xì)介紹一些常用的字符串內(nèi)置方法,并提供具體的實(shí)例。
1.字符串查詢
字符串查詢的方法用來搜索或查詢字符串中特定內(nèi)容存在與否,或者獲取特定內(nèi)容的位置信息。以下是一些常用的字符串查詢方法及其具體實(shí)例。
(1)?count():用來統(tǒng)計(jì)字符串中某個(gè)字符或子串出現(xiàn)的次數(shù),如果不存在則返回0。例如:
(2)?find()和rfind():find()方法用來查找子字符串首次出現(xiàn)的位置(從左側(cè)開始查找),并返回子字符串開始的索引。如果找到了子字符串,則返回第一次出現(xiàn)的索引;如果沒有找到,則返回?-1。rfind()類似于find(),但是它是查找子字符串最后一次出現(xiàn)的位置。例如:
(3)?index()和rindex():index()和rindex()方法與find()和rfind()非常相似,但是當(dāng)指定的子字符串不在主字符串中時(shí),index()和rindex()會(huì)拋出一個(gè)ValueError異常,而不是返回-1。例如:
2.字符串分割與合并
(1)?spilt()和rsplit():split()和rsplit()方法用于將字符串按照指定的分隔符,從原字符串的左端和右端開始進(jìn)行分割,并返回一個(gè)字符串列表(列表內(nèi)容后面章節(jié)將詳細(xì)介紹)。例如,以下代碼將字符串"hello,world"按照逗號(hào)進(jìn)行分割。
split()方法還有一個(gè)可選參數(shù)maxsplit,用于指定分割的次數(shù)。例如,以下代碼將字符串"hello|world|python"按照豎線進(jìn)行分割。
(2)?partition():partition()方法用于將字符串按照指定的分隔符進(jìn)行分割,并返回一個(gè)包含分隔符的字符串列表。例如:
(3)?join():join()方法用于將列表中的字符串按照指定的分隔符進(jìn)行連接,并返回一個(gè)新的字符串。例如,以下代碼將列表["hello","world"]按照冒號(hào)進(jìn)行連接。
3.字符串轉(zhuǎn)換
4.字符串去除
(1)?strip():用于去除字符串兩側(cè)的空格或指定的字符(包括空格、換行符、制表符等)。如果不指定參數(shù),默認(rèn)去除空格。例如:
(2)?lstrip()和rstrip():lstrip()用于去除字符串左端指定的字符;rstrip()用于去除字符串右端指定的字符。例如:
5.字符串替換
replace():用于在字符串中替換指定的子字符串。例如,以下代碼將字符串?"helloworld"中的?"world"?替換為?"python":
6.字符串判斷
(1)?startswith()和endswith():startswith()方法用于檢查字符串是否以指定的子字符串開始。endswith()方法用于檢查字符串是否以指定的子字符串結(jié)尾。例如:
7.字符串排版
(4)?zfill():返回指定長度的字符串,原字符串右對(duì)齊,前面填充0。例如:
2.6.4字符串的內(nèi)置函數(shù)
Python的字符串類型除了擁有許多實(shí)用的內(nèi)置方法之外,還可以通過一些內(nèi)置函數(shù)進(jìn)行操作和處理。這些函數(shù)提供了另一種方式來處理字符串,經(jīng)常用于類型轉(zhuǎn)換、字符編碼等任務(wù)。下面列舉了一些常用的與字符串相關(guān)的內(nèi)置函數(shù)并提供了示例。
(1)?len():返回字符串中的字符數(shù)。請(qǐng)注意,對(duì)于字符串而言,len()計(jì)算的是字符的數(shù)量。例如:
如果字符串中包含多字節(jié)字符(如許多Unicode字符),這些字符也會(huì)被計(jì)算為一個(gè)單元。例如:
在上述代碼中,盡管這個(gè)字符串包含的是中文字符,每個(gè)中文字符在某些編碼下(如UTF-8)可能占用多個(gè)字節(jié),但len()計(jì)數(shù)的是字符數(shù),因此返回6,而不是字節(jié)的數(shù)量。
(2)?str():用于將一個(gè)對(duì)象轉(zhuǎn)換成字符串形式。例如:
(3)?hex()和oct():分別用于將整數(shù)轉(zhuǎn)換成其十六進(jìn)制和八進(jìn)制字符串表達(dá)形式,字符串以小寫形式顯示,且分別以0x和0o為前綴。例如:
(4)?ord()和chr():兩個(gè)互為逆操作的內(nèi)置函數(shù),用于字符與其ASCII碼或Unicode碼點(diǎn)之間的轉(zhuǎn)換。例如:
【例2-23】
使用ord()和chr()進(jìn)行簡單的字符加密和解密。
【參考代碼】
(5)?int()、float()和bool():類型轉(zhuǎn)換函數(shù),用于將一個(gè)數(shù)據(jù)類型的值轉(zhuǎn)換為另一個(gè)數(shù)據(jù)類型的值。int()用于將一個(gè)數(shù)或字符串轉(zhuǎn)換為整數(shù);float()用于將一個(gè)字符串或數(shù)轉(zhuǎn)換為浮點(diǎn)數(shù);bool()用于將給定參數(shù)轉(zhuǎn)換為布爾值。例如:
2.7字符串格式化
2.7.1format()格式化方法
1.基本用法
format()方法提供了一種靈活處理字符串格式化的方式。它允許插入變量的值到字符串的占位符中。在format()方法中,大括號(hào){}被用作占位符,用于放置變量名或者索引,指示要從format()方法的參數(shù)中插入哪個(gè)值。它的基本用法如下:
其中,“Placeholdertext{}and{}”是包含文字和占位符的字符串。大括號(hào){}用作占位符,format()方法中的參數(shù)將替換占位符。參數(shù)的順序默認(rèn)對(duì)應(yīng)各占位符的位置,可以在大括號(hào){}中使用索引,指定要插入的參數(shù)的順序。例如:
2.格式指定
format()方法通過在字符串中使用一系列的格式指定來控制值的顯示方式。格式指定跟在占位符的冒號(hào)“:”之后。格式指定的通用結(jié)構(gòu)是:
【例2-24】format()方法格式化示例。
2.7.2格式化字符串字面量
Python3.6中引入了格式化字符串字面量(也叫做f-?字符串)。它們?cè)试S在字符串前加上f或F前綴,并且可以包含花括號(hào){}作為表達(dá)式的占位符。這些表達(dá)式在運(yùn)行時(shí)會(huì)被即時(shí)計(jì)算并格式化。f-?字符串的語法簡潔、易于閱讀,并且性能很好,在運(yùn)行時(shí)可直接被解析。
【例2-25】f-?字符串基本用法示例。
【例2-26】f-?字符串格式控制示例。
在上述例子中,“:.2f”告訴Python將價(jià)格格式化為兩位小數(shù)的浮點(diǎn)數(shù)。
本
章
小
結(jié)
在本章中,我們對(duì)Python語言的基礎(chǔ)語法知識(shí)進(jìn)行了深入的探討,從Python的語法特點(diǎn)入手,我們逐步介紹了變量定義、命名規(guī)則、變量賦值、數(shù)值類型和字符串類型,并分別介紹了針對(duì)數(shù)值型數(shù)據(jù)和字符串類型數(shù)據(jù)的內(nèi)置函數(shù)和方法。第3章程序流程控制3.1條件表達(dá)式3.2選擇結(jié)構(gòu)3.3循環(huán)結(jié)構(gòu)與迭代3.4random庫的使用3.5程序流程控制的應(yīng)用實(shí)例本章小結(jié)
3.1條
件
表
達(dá)
式
3.1.1關(guān)系運(yùn)算符
Python語言中的關(guān)系運(yùn)算符如表3-1所示,運(yùn)算結(jié)果是True或False。
【例3-1】
關(guān)系運(yùn)算符使用示例。
3.1.2邏輯運(yùn)算符
Python語言支持邏輯運(yùn)算符,邏輯運(yùn)算符只有3個(gè),它們的優(yōu)先級(jí)(分3級(jí))從高到低依次是:not、and、or。用邏輯運(yùn)算符描述的表達(dá)式稱為邏輯表達(dá)式或布爾表達(dá)式。
nota:如果a為False,則返回1;否則返回0。
aandb:如果a為False,則返回a;否則返回b。
aorb:如果a為False,則返回b;否則返回a。
【例3-2】
邏輯運(yùn)算符使用示例。
3.1.3構(gòu)造條件表達(dá)式
使用各種運(yùn)算符可以構(gòu)建不同的表達(dá)式,例如:
3.2選
擇
結(jié)
構(gòu)
選擇結(jié)構(gòu)是指程序運(yùn)行到某個(gè)節(jié)點(diǎn)后,會(huì)根據(jù)一次判斷的結(jié)果來決定之后向哪一個(gè)分支方向執(zhí)行,也稱為分支結(jié)構(gòu)。
假設(shè)我們正在編寫一個(gè)程序,這個(gè)程序的任務(wù)是根據(jù)用戶輸入的天氣(晴天、雨天、雪天)來給出相應(yīng)的建議。如果沒有選擇結(jié)構(gòu),我們可能會(huì)這樣寫代碼。
這就是需要選擇結(jié)構(gòu)的原因。有了選擇結(jié)構(gòu),我們可以根據(jù)不同的條件執(zhí)行不同的代碼,使得程序的行為更加符合我們的預(yù)期。例如,上面的代碼可以改寫如下:
3.2.1單分支結(jié)構(gòu):if語句
單分支結(jié)構(gòu)使用if語句,在條件為真時(shí)執(zhí)行操作,條件為假時(shí)不執(zhí)行操作。
if語句的語法格式為:
其中:
(1)條件表達(dá)式可以是任意的數(shù)值、字符、關(guān)系或邏輯表達(dá)式,或用其他數(shù)據(jù)類型表示的表達(dá)式。當(dāng)它表示條件時(shí),以True(數(shù)值為1)表示真,F(xiàn)alse(數(shù)值為0)表示假。
注意:條件表達(dá)式的結(jié)果一定是真或假,條件表達(dá)式后有“:”,表示執(zhí)行的語句要向右邊縮進(jìn)。
(2)?<語句序列>稱為if語句的內(nèi)嵌語句序列或子句序列,內(nèi)嵌語句序列嚴(yán)格地以縮進(jìn)方式表達(dá),編輯器也會(huì)提示程序員開始書寫內(nèi)嵌語句的位置,如果不再縮進(jìn),表示內(nèi)嵌語句在上一行就寫完了。
if條件語句的執(zhí)行順序是:首先計(jì)算條件表達(dá)式的值,若表達(dá)式的值為True,則執(zhí)行內(nèi)嵌的語句序列,否則不做任何操作。
通過圖3-1可以簡單了解單分支結(jié)構(gòu)中if語句的執(zhí)行過程。圖3-1if語句執(zhí)行過程
【例3-3】
單分支結(jié)構(gòu)示例。
3.2.2雙分支結(jié)構(gòu):if…else語句
雙分支結(jié)構(gòu)使用if…else語句,在條件為真時(shí)執(zhí)行一個(gè)操作,在條件為假時(shí)執(zhí)行另一個(gè)操作。
if…else語句的語法格式為:
其執(zhí)行順序是:首先計(jì)算條件表達(dá)式的值,若條件表達(dá)式的值為True,則執(zhí)行<語句序列1>,否則執(zhí)行<語句序列2>。
if…else語句的執(zhí)行過程如圖3-2所示。圖3-2if…else語句的執(zhí)行過程
【例3-4】
雙分支結(jié)構(gòu)示例。
3.2.3多分支結(jié)構(gòu):if…elif…else語句
多分支結(jié)構(gòu)使用if…elif…else語句,根據(jù)不同的條件執(zhí)行不同的操作。
當(dāng)條件表達(dá)式有多個(gè)值,實(shí)際處理的問題有多種條件時(shí),就要用到多分支結(jié)構(gòu),多分支結(jié)構(gòu)語句的執(zhí)行過程如圖3-3所示。圖3-3多分支結(jié)構(gòu)語句的執(zhí)行過程
if…elif…else語句的語法格式為:
if…elif…else語句的執(zhí)行順序是:首先計(jì)算<條件表達(dá)式1>的值,若其值為True,則執(zhí)行<語句序列1>;否則,繼續(xù)計(jì)算<條件表達(dá)式2>的值,若其值為True,則執(zhí)行<語句序列2>;依此類推,若所有條件表達(dá)式的值都為False,則執(zhí)行<語句序列n?+?1>。
注意:
(1)不管有幾個(gè)分支,程序在執(zhí)行了一個(gè)分支以后,其余分支就不再執(zhí)行。
(2)當(dāng)多分支中有多個(gè)條件表達(dá)式同時(shí)滿足條件時(shí),只執(zhí)行第一條與之匹配的語句。
【例3-5】
多分支結(jié)構(gòu)語句示例。
【例3-6】
判定用戶輸入操作實(shí)例。
3.2.4嵌套if語句
在上述的if選擇結(jié)構(gòu)中,語句塊本身也可以是一段if語句,這樣就形成了if語句的嵌套結(jié)構(gòu),可以實(shí)現(xiàn)更復(fù)雜的條件判斷。
【例3-7】
根據(jù)用戶輸入的年齡和駕駛經(jīng)驗(yàn),決定是否給予駕駛許可。
【分析】
在這個(gè)例子中,我們需要根據(jù)兩個(gè)條件(年齡和駕駛經(jīng)驗(yàn))來做出決定,這就需要使用嵌套的if語句。
【參考代碼】
【例3-8】
根據(jù)用戶輸入的時(shí)間(小時(shí)和分鐘)來決定是早上、中午、下午、晚上還是深夜。
【分析】
在這個(gè)例子中,我們需要根據(jù)用戶輸入的時(shí)間來決定是哪個(gè)時(shí)間段。這就需要使用嵌套的if語句。
【參考代碼】
3.2.5結(jié)構(gòu)化模式匹配matchcase(switchcase)
雖然使用嵌套的if語句的命令性系列指令可以被用來完成類似結(jié)構(gòu)化模式匹配的效果,但它沒有聲明性方式那樣清晰。聲明性方式指定了一個(gè)匹配所要滿足的條件,并且通過顯式的模式使之更為易讀。更強(qiáng)大的模式匹配例子可以在Scala和Elixir等語言中找到。這種結(jié)構(gòu)化模式匹配方式是聲明性的,并且會(huì)顯式地為所要匹配的數(shù)據(jù)指定條件(模式)。
模式由序列、映射、基本數(shù)據(jù)類型以及類實(shí)例構(gòu)成。模式匹配使得程序能夠從復(fù)雜的數(shù)據(jù)類型中提取信息,根據(jù)數(shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn)分支,并基于不同的數(shù)據(jù)形式完成特定的動(dòng)作。
matchcase語句的語法格式如下:
match語句接受一個(gè)表達(dá)式,并將其值與以一個(gè)或多個(gè)case語句塊形式給出的一系列模式進(jìn)行比較。具體來說,模式匹配的操作如下:
(1)給定具有特定類型和結(jié)構(gòu)的數(shù)據(jù)(subject)。
(2)針對(duì)subject在match語句中求值。
(3)從上到下對(duì)subject與case語句中的每個(gè)模式進(jìn)行比較,直到確認(rèn)匹配到一個(gè)模式,執(zhí)行與被確認(rèn)匹配的模式相關(guān)聯(lián)的動(dòng)作。如果沒有確認(rèn)到一個(gè)完全的匹配:如果提供了使用通配符_的最后一個(gè)case語句,則它將被用作已匹配模式;不存在使用通配符的case語句,則整個(gè)match代碼塊不執(zhí)行任何操作。
【例3-9】matchcase語句示例一。
【例3-10】matchcase語句示例二。
3.3循環(huán)結(jié)構(gòu)與迭代
3.3.1基本循環(huán)結(jié)構(gòu)循環(huán)是編程中的一個(gè)基本概念,它允許程序執(zhí)行一系列重復(fù)的操作,直到滿足特定的條件或完成既定的任務(wù)。循環(huán)的重要性在于它提供了一種強(qiáng)大的工具,用于處理需要多次執(zhí)行相同或類似操作的情況,比如遍歷數(shù)據(jù)集合中的每個(gè)元素,或者重復(fù)執(zhí)行某個(gè)計(jì)算直到達(dá)到預(yù)定的目標(biāo)。
3.3.2for循環(huán)
for循環(huán)在Python中主要用于遍歷序列(如列表、元組、字符串)或其他可迭代對(duì)象,它的一般語法結(jié)構(gòu)如下:
【例3-11】
字符串作為iterable示例。
在Python中,字符串可以被視為字符的集合,因此它是一個(gè)可迭代的對(duì)象。當(dāng)使用for循環(huán)遍歷一個(gè)字符串時(shí),該循環(huán)會(huì)按順序迭代字符串中的每個(gè)字符。
【例3-12】
列表作為iterable示例。
3.3.3while循環(huán)
while循環(huán)適用于循環(huán)的初值和終值并不明確但有清晰的循環(huán)條件的情況,它會(huì)一直執(zhí)行循環(huán)體內(nèi)的代碼,直到指定的條件不再為真。while循環(huán)的一般語法結(jié)構(gòu)如下:
【例3-13】while語句示例。
下面提供一些簡單的例子來展示如何在Python中使用for循環(huán)和while循環(huán)。
【例3-14】
打印數(shù)字序列。
【例3-15】
打印字符串中的字符及其索引。
這個(gè)循環(huán)使用enumerate函數(shù)來同時(shí)獲取字符串"hello"中每個(gè)字符及其對(duì)應(yīng)的索引。
【例3-16】
計(jì)算某個(gè)數(shù)的倍數(shù)。
3.3.4break語句
在Python編程中,循環(huán)是一個(gè)常用的結(jié)構(gòu),用于重復(fù)執(zhí)行一段代碼直到滿足特定條件。然而,在某些情況下,我們可能遇到一些只執(zhí)行循環(huán)體中的部分語句就結(jié)束循環(huán),或者立刻轉(zhuǎn)去下一次循環(huán)的情況,這就是break和continue語句發(fā)揮作用的地方。
break語句在Python中用于立即終止當(dāng)前循環(huán)的執(zhí)行。當(dāng)break被執(zhí)行時(shí),它會(huì)跳出最內(nèi)層的for或while循環(huán),繼續(xù)執(zhí)行循環(huán)后面的代碼。
【例3-17】break語句示例一。
【例3-18】
查找特定的數(shù)字。
【例3-19】break語句示例二。
3.3.5continue語句
continue語句用于結(jié)束當(dāng)前輪的循環(huán),程序跳轉(zhuǎn)到循環(huán)頭部,然后根據(jù)頭部的要求繼續(xù)循環(huán)。它通常用于在滿足特定條件時(shí)跳過一些不需要執(zhí)行的代碼。
【例3-20】continue語句示例。
continue語句和break語句使用場(chǎng)景如下:
1.?break
(1)當(dāng)需要在找到某個(gè)條件或值后立即退出循環(huán)時(shí)。
(2)當(dāng)循環(huán)內(nèi)的某個(gè)條件不再滿足繼續(xù)執(zhí)行的需求時(shí)。
2.?continue
(1)當(dāng)需要忽略當(dāng)前迭代中的剩余代碼,并立即開始下一次迭代時(shí)。
(2)當(dāng)有一個(gè)特定的條件不希望執(zhí)行循環(huán)體中的某些代碼時(shí)。
注意事項(xiàng)如下:
(1)合理使用break和continue可以提高代碼的效率和可讀性。
(2)濫用這些語句可能會(huì)導(dǎo)致代碼邏輯混亂,因此建議只在必要時(shí)使用它們,并確保其使用有明確的意圖。
3.3.6循環(huán)的嵌套
在Python程序中,循環(huán)不僅可以單獨(dú)使用,還可以嵌套在其他循環(huán)內(nèi)部,形成多級(jí)循環(huán)結(jié)構(gòu)。嵌套循環(huán)允許創(chuàng)建復(fù)雜的邏輯,以處理矩陣、列表集合或執(zhí)行重復(fù)任務(wù)的不同階段。
嵌套循環(huán)的語法與普通循環(huán)類似,但嵌套循環(huán)是在另一個(gè)循環(huán)的內(nèi)部開始的。
【例3-21】
嵌套循環(huán)示例。
【例3-22】
打印9?×?9乘法表。
注意事項(xiàng)如下:
(1)避免無限嵌套。確保嵌套循環(huán)有明確的退出條件,以避免創(chuàng)建無限循環(huán)。
(2)保持可讀性。隨著嵌套層次的增加,代碼的可讀性可能會(huì)降低??紤]使用函數(shù)或循環(huán)控制語句來提高代碼的清晰度。
(3)性能考慮。嵌套循環(huán)可能會(huì)導(dǎo)致性能問題,尤其是在處理大數(shù)據(jù)集時(shí)。應(yīng)確保循環(huán)邏輯盡可能高效。
3.4random庫的使用
首先,在Python中,若需要使用他人預(yù)先寫好的一些功能,需要導(dǎo)入相對(duì)應(yīng)的庫,這樣才能夠使用其中的函數(shù)。在Python中,導(dǎo)入庫使用import關(guān)鍵字。此處,我們需要導(dǎo)入random庫。
【例3-23】
生成0到100之間的隨機(jī)整數(shù)。
【例3-24】
生成一個(gè)0到10(包括0和10)之間的隨機(jī)浮點(diǎn)數(shù)。
【例3-25】random()函數(shù)應(yīng)用示例。
【例3-26】choice()函數(shù)示例。
【例3-27】seed()函數(shù)應(yīng)用示例。
本小節(jié)介紹了Python中random庫的基本使用方法,包括生成隨機(jī)整數(shù)、隨機(jī)浮點(diǎn)數(shù)以及隨機(jī)選擇列表中的元素。Python中的random庫提供了豐富的函數(shù)功能,通過靈活運(yùn)用這些函數(shù),可以滿足各種隨機(jī)數(shù)生成的需求。但在一些涉及安全相關(guān)的場(chǎng)景時(shí),應(yīng)謹(jǐn)慎使用隨機(jī)數(shù)。
3.5程序流程控制的應(yīng)用實(shí)例
【例3-28】
請(qǐng)編寫一個(gè)程序,接受用戶輸入的字符串a(chǎn),并輸出其逆序后的結(jié)果。例如:a="olleh",則輸出hello。【分析】
我們可以使用循環(huán)結(jié)構(gòu)來遍歷字符串,并將字符逆序存儲(chǔ)到另一個(gè)變量中。具體來說,我們可以從字符串的末尾開始逐個(gè)取出字符,并將其加到另一個(gè)變量中,從而實(shí)現(xiàn)字符的逆序輸出。
【參考代碼】
通過使用for循環(huán)和range函數(shù),我們可以實(shí)現(xiàn)從字符串末尾開始逐個(gè)取出字符的操作。需要注意range函數(shù)的參數(shù)設(shè)置,起始索引為字符串長度減一,結(jié)束索引為?-1,步長為?-1,這樣可以實(shí)現(xiàn)倒序遍歷字符串的目的。在for循環(huán)中,我們使用加號(hào)操作符將逆序后的字符依次拼接到新的字符串中。這種方法在Python中是可行的,但需要注意,字符串拼接操作可能會(huì)導(dǎo)致性能損耗,尤其是當(dāng)字符串很長時(shí)。(此處選擇了使用本章所學(xué)的循環(huán)結(jié)構(gòu)來實(shí)現(xiàn)字符串逆序輸出效果,請(qǐng)大家結(jié)合前面章節(jié)所學(xué)習(xí)的字符串的相關(guān)操作,思考能否使用一行代碼代替循環(huán)結(jié)構(gòu)來實(shí)現(xiàn)逆序效果。)
【例3-29】
假設(shè)有多位顧客對(duì)一個(gè)產(chǎn)品的星級(jí)評(píng)價(jià)記錄如下:[1,5,6,4,2,3,1,2]。
(1)請(qǐng)編寫一個(gè)程序,打印出所有低于4星的評(píng)價(jià)。
(2)請(qǐng)編寫一個(gè)程序,在循環(huán)中跳過所有5星及以上的評(píng)價(jià)并打印出其余評(píng)價(jià)。
需要在一行中輸出,每個(gè)輸出之間使用空格分隔。
【分析】
對(duì)于問題(1),可以使用for循環(huán)遍歷列表中的每個(gè)評(píng)價(jià),然后使用if語句檢查是否小于4星,如果是,則打印出來。對(duì)于問題(2),同樣可以使用for循環(huán)遍歷列表,在循環(huán)中使用continue語句跳過所有大于等于5星的評(píng)價(jià),然后打印出其余評(píng)價(jià)。
【參考代碼】
當(dāng)程序執(zhí)行到continue語句時(shí),會(huì)立即跳過本次循環(huán)中continue之后的代碼,并開始下一次循環(huán),這樣可以在滿足特定條件時(shí)跳過某些操作(在本例中即跳過所有5星及以上的評(píng)價(jià)),從而達(dá)到控制循環(huán)執(zhí)行的目的。此外,本題還要求在一行中輸出,并且每個(gè)輸出之間使用空格進(jìn)行分隔,可通過設(shè)置print函數(shù)的end參數(shù)為""實(shí)現(xiàn)。
【參考代碼】
【例3-31】
編寫一個(gè)程序,接受用戶輸入的一個(gè)正整數(shù),然后將該整數(shù)分解質(zhì)因數(shù),并按照升序輸出。
【分析】
因?yàn)?是最小的質(zhì)數(shù),所以2可以作為我們開始嘗試的可能的質(zhì)因數(shù)。接下來,我們使用一個(gè)循環(huán)從2開始來逐個(gè)數(shù)字嘗試是否是用戶輸入的正整數(shù)的因數(shù),直到該數(shù)字大于用戶輸入的正整數(shù)為止。在每次循環(huán)中,我們檢查當(dāng)前的數(shù)字是否能整除用戶輸入的正整數(shù),如果是,則當(dāng)前的數(shù)字是用戶輸入的正整數(shù)的一個(gè)質(zhì)因數(shù)。我們打印出這個(gè)質(zhì)因數(shù),并將用戶輸入的正整數(shù)更新為除去已找到的因數(shù)后的商。如果用戶輸入的正整數(shù)不等于1,則表示我們還沒有找到全部的質(zhì)因數(shù),那么我們輸出一個(gè)乘號(hào)作為分隔,并繼續(xù)嘗試下一個(gè)數(shù)作為因數(shù)。這樣,最終輸出的結(jié)果就是將輸入的整數(shù)按照質(zhì)因數(shù)分解的形式進(jìn)行了因數(shù)分解。
【參考代碼】
【例3-32】
編寫一個(gè)程序,根據(jù)輸入的HTTP狀態(tài)碼匹配對(duì)應(yīng)的含義并輸出。如果輸入的狀態(tài)碼是400,則輸出“Badrequest”;如果輸入的狀態(tài)碼是401,則輸出“Unauthorized”;如果輸入的狀態(tài)碼是403,則輸出“Forbidden”;如果輸入的狀態(tài)碼是404,則輸出“Notfound”;對(duì)于其他任何狀態(tài)碼,則輸出“Unknownstatuscode”。
【分析】
根據(jù)輸入的HTTP狀態(tài)碼匹配對(duì)應(yīng)的含義并輸出相應(yīng)的信息。為了實(shí)現(xiàn)這個(gè)目標(biāo),我們可以使用matchcase結(jié)構(gòu),它可以更清晰地進(jìn)行模式匹配和條件判斷。首先,我們接受用戶輸入的HTTP狀態(tài)碼,并將其存儲(chǔ)在一個(gè)變量中。然后,我們使用matchcase結(jié)構(gòu)來匹配該狀態(tài)碼。這是Python3.10中新增的語法,可用于更清晰地進(jìn)行模式匹配和條件判斷,在此前的Python版本中都是使用if…elif…else結(jié)構(gòu)來實(shí)現(xiàn)類似的功能。
【參考代碼】
【例3-33】
編寫一個(gè)程序,接受一組年齡數(shù)據(jù),然后統(tǒng)計(jì)并輸出不同年齡段的人數(shù),分別為兒童(0~12歲)、青少年(13~17歲)、成年人(18~59歲)和老年人(60歲及以上)。要求使用matchcase語句實(shí)現(xiàn)。
【分析】
這個(gè)程序需要接受一組年齡數(shù)據(jù),然后根據(jù)每個(gè)人的年齡來判斷他們屬于哪個(gè)年齡段。為了實(shí)現(xiàn)這一功能,我們可以使用matchcase語句,根據(jù)年齡的不同范圍進(jìn)行匹配,并統(tǒng)計(jì)每個(gè)年齡段的人數(shù)。
【參考代碼】
【例3-34】
編寫一個(gè)程序,用于模擬經(jīng)典的“石頭剪刀布”游戲。該程序需要實(shí)現(xiàn)以下功能:
(1)用戶輸入自己的選擇(石頭、剪刀或布)。
(2)程序隨機(jī)生成石頭、剪刀或布。
(3)根據(jù)游戲規(guī)則判斷勝負(fù),并輸出游戲結(jié)果。
游戲規(guī)則如下:
(1)石頭勝剪刀。
(2)剪刀勝布。
(3)布勝石頭。
(4)如果雙方出拳一樣,則為平局。
【分析】
這個(gè)程序用到了用戶輸入、隨機(jī)數(shù)生成和條件判斷等基本編程概念。我們需要讓用戶輸入他們的選擇,然后使用隨機(jī)數(shù)生成程序的選擇。接著,需要編寫條件語句來比較用戶和程序的選擇,以確定游戲結(jié)果并將其輸出給用戶。
【參考代碼】
程序根據(jù)用戶和電腦的選擇進(jìn)行游戲結(jié)果的判斷。通過if…elif…else結(jié)構(gòu)(感興趣的讀者可以嘗試使用前面例題中用到的matchcase結(jié)構(gòu)來實(shí)現(xiàn)),程序判斷用戶和電腦的選擇是否相同,如果相同則是平局;如果不同,則根據(jù)石頭剪刀布的規(guī)則,判斷用戶是否贏得了比賽。根據(jù)判斷結(jié)果輸出對(duì)應(yīng)的結(jié)果信息,比如平局、贏了或是輸了。
Python語言被廣泛使用的原因之一就是其有豐富的庫支持,我們只需通過簡單的importxx(xx為想要使用的庫名)就可以導(dǎo)入某個(gè)庫,以便在自己的程序中使用他人早已實(shí)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 25246-2025畜禽糞肥還田技術(shù)規(guī)范
- 2025年常德c1貨運(yùn)從業(yè)資格證考試內(nèi)容
- 兒童桌子采購合同范本
- 鄉(xiāng)鎮(zhèn)飯店轉(zhuǎn)讓合同范本
- 公司房租轉(zhuǎn)租合同范本
- 倉庫裝修合同范本版
- 上海廠房出售合同范本
- 茶器定制合同范本
- 中標(biāo)咨詢合同范本
- 農(nóng)村訂購混泥土合同范本
- 2023年中國農(nóng)業(yè)大學(xué)人才招聘筆試真題
- GB/T 44619-2024福壽螺檢疫鑒定方法
- 2024年湖南省公務(wù)員錄用考試《行測(cè)》試題及答案解析
- 北京聯(lián)合大學(xué)《電子技術(shù)基礎(chǔ)》2022-2023學(xué)年期末試卷
- 電力工程質(zhì)量驗(yàn)收手冊(cè)
- 四年級(jí)語文下冊(cè) 期末復(fù)習(xí)文言文閱讀專項(xiàng)訓(xùn)練(一)(含答案)(部編版)
- 學(xué)習(xí)新課程標(biāo)準(zhǔn)的方案
- 2024年知識(shí)競賽-煙花爆竹安全管理知識(shí)競賽考試近5年真題附答案
- 民航基礎(chǔ)知識(shí)應(yīng)用題庫100道及答案解析
- 2024年黑龍江省哈爾濱市中考數(shù)學(xué)試卷(附答案)
- SolidWorks-2020項(xiàng)目教程全套課件配套課件完整版電子教案
評(píng)論
0/150
提交評(píng)論