




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