Python編程快速入門

Python編程快速入門

Python是當前最流行的編程語言之一,可應用於Web開發、數據分析、人工智能、科學計算、桌面應用、遊戲開發等等多個領域。Python的一大特色就是它具有豐富的程序庫(包括內置的庫及第三方開發的庫),我們不必從頭開始編寫代碼,就可以實現功能強大的應用程序。Python不但功能強大,而且和其他編程語言相比它相對簡單,不需要任何先前的編程經驗即可學習、使用,對初學者極為友好。下面就讓我們一起走進豐富多彩的Python編程世界。

文|夢飛

Python編程環境設置

  Python是一種解釋性語言,它使用解釋器來解釋和執行代碼,這對用戶來說省去了C或C++之類語言的編譯步驟,直接從源代碼即可運行,因此更容易編寫和調試。工欲善其事,必先利其器。在學習Python編程之前,先讓我們安裝好相應的工具並對編程環境進行設置。

  首先進入Python官方下載頻道https://www.python.org/downloads,點擊“Download Python 3.11.2”按鈕進入下載頁面(此數字會隨著版本的升級而改變)。找到適合自己系統的下載鏈接,比如筆者為Windows的64位系統,所以選擇下載了“Windows installer (64-bit)”。雙擊下載所得的EXE可執行文件啟動Python安裝嚮導(圖1)。

  圖1 Python安裝嚮導

  勾選“Add python.exe to PATH”項,這樣就不用後期手動將Python程序添加到系統路徑中了。點擊“Install Now”即可自動安裝。如果不希望安裝到默認的C盤,可以點擊“Customize installation”自定義安裝項,根據嚮導提示一步步安裝(圖2)。

  圖2 Python自定義安裝

  作為初學者選擇默認安裝選項即可。安裝成功後,對於Windows系統將會有一個“Disable path length limit(禁用路徑長度限制)”的提示,這是因為Windows系統能夠處理的文件路徑長度有一定的限制(圖3)。點擊禁用這一限制可以避免處理長文件路徑時出現的調試問題,不過這也可能導致與舊版本Windows 10的兼容性問題。對於我們初學者來說可以暫時跳過此選項,因為以後有需要時還可以修改註冊表來解決。

  圖3 Python安裝成功的界面

  點擊“Close”按鈕關閉安裝嚮導。現在我們測試Python是否安裝成功。按Win+R鍵調出運行對話框,輸入“cmd”後按回車鍵打開命令提示符窗口,然後輸入“python”並按回車,如果能夠顯示出Python版本等信息內容,並且提示符變成了“>>>”,則表示安裝成功了。此時可輸入一行測試代碼:

  print("嗨,歡迎來到Python世界!")

  按回車鍵執行,即可得到“嗨,歡迎來到Python世界!”的顯示信息。幾乎每種編程語言教程中都會展示一下“hello, world!”程序,雖然很俗套,但不得不說Python的實現是如此的簡單。緊接著執行代碼“exit()”退出Python環境,完成此一階段的測試(圖4)。

  圖4 Python的“hello, world!”程序示例

  命令提示符的界面過於簡陋,我們可以試試Python自帶的IDLE交互式開發環境。點擊系統“開始”按鈕,在開始菜單頂部的最近添加中就可以看到“IDLE(Pyton 3.11 64-bit)”程序了,點擊即可打開。

  IDLE通過不同的顏色區分代碼及執行結果,清晰明瞭。尤其方便的是,當我們輸入某個函數時,它會智能顯示參數提示,輔助我們輸入代碼,非常方便(圖5)。

  圖5 Python的IDLE交互式開發環境

  除了一行一行的交互式執行,IDLE還可以執行擴展名為“py”的Python程序文件,下面就來做個測試。首先點擊菜單命令“File→New File”打開IDLE的代碼編輯器,輸入以下代碼:

  # Python 3: 顯示n個數以內的斐波納契(Fibonacci)序列

  def fib(n):

  a, b = 0, 1

  while a < n:

  print(a, end=' ')

  a, b = b, a+b

  print()

  fib(1000)

  代碼解釋:“#”後面的文字表示註釋,是程序員對代碼的說明,這是給閱讀代碼的人看的,Python解釋器會自動忽略這一行。接下來的“def fib(n):”定義了一個名為“fib”的函數,其後縮進的幾行代碼就是該函數的內容,其主體是一個“while”循環,通過斐波納契數列公式反覆運算,運算結果通過“print()”函數顯示出來,其參數“end='  '”表示每個數字後面加幾個空格,是為了將數字隔開(用來顯示的print函數在後面的示例中將頻繁出現)。當然,函數定義只是表明此函數能做什麼,真正運行還得對它進行調用,這就是最後一行代碼“fib(1000)”的作用,在調用該函數時,傳遞了一個參數“1000”,表示要計算1000以內的斐波納契數列(圖6)。

  圖6 斐波納契數列計算

  對於初學者來說可能還理解不了這段代碼,沒有關係,這正是後文要介紹的內容。現在按Ctrl+S鍵保存,在打開的保存對話框中輸入文件名(本例取名為“Fibonacci”),這裡無需手動添加“py”後綴,它會自動添加(圖7)。

  圖7 保存Python程序文件

  保存完畢,點擊代碼編輯器的菜單命令“Run→Run Module”,或者直接按F5鍵,即可運行這段代碼了。下次在IDLE中,隨時可以執行菜單命令“File→Open”打開“Fibonacci.py”文件,並按F5鍵運行(圖8)。

  圖8 斐波納契數列計算程序的輸出結果

  PyCharm——Python開發好伴侶

  IDE是Integrated Development Environment的縮寫,意為集成開發環境,主要用來輔助程序開發。Python並不一定需要IDE,因為它可以在任何文本編輯器中編寫並從命令行運行。但是IDE可以提供許多輔助功能,例如代碼調試、智能完成和語法高亮顯示等。另外,IDE還可以提供重構、代碼導航和項目管理等工具,這些工具可以幫助我們更快、更輕鬆地編寫Python代碼,並且可以更輕鬆地調試和維護代碼。

  Python開發人員有多種IDE可用,相對來說PyCharm是個非常不錯的選擇,它可以讓Python開發過程變得更加輕鬆和高效。值得稱道的是,PyCharm提供一個強大的社區版本,可以免費使用,並且可以在網上獲得免費支持。

  首先進入PyCharm主頁https://www.jetbrains.com/pycharm,點擊“DOWNLOAD”按鈕進入下載頻道,在“Windows”選項卡下可以看到“Professional(專業版)”和“Community(社區版)”兩種版本,其中社區版是免費的,點擊其下的“Download”按鈕下載即可。比較而言,社區版缺少對科學工具、網站開發、Web框架、遠程開發、數據庫等的支持,不過對於一個初學者來說,這些影響不大(圖9)。

  圖9 PyCharm專業版和社區版功能比較

  雙擊下載所得的EXE文件啟動安裝嚮導,點擊“Next”按鈕進入下一步,根據嚮導提示選擇安裝位置,創建快捷方式以及關聯py文件等,最後點擊“Install”進行安裝即可。安裝完成,需要重新啟動系統(圖10)。

  圖10 PyCharm社區版安裝嚮導

  重啟系統後,點擊“開始”按鈕,在開始菜單頂部的最近添加項中點擊“PyCharm Community Edition 2022.3.2 ”啟動PyCharm。第一次使用PyCharm需要進行一些設置,首先顯示用戶協議,只有勾選“I confirm that I have read and accept the terms of this User Agreement”(同意該協議)才可以繼續。單擊“Continue”按鈕進入數據共享頁面,如果不希望自己的數據被蒐集,可以點擊“Don't Send(不發送)”按鈕繼續,進入PyCharm的歡迎界面(圖11)。

  圖11 PyCharm歡迎界面

  在“Projects”選項卡下點擊“New Project”按鈕新建一個項目,接下來設置新項目的保存位置和名稱(Location)。另外我們還得給PyCharm選定一個Python解釋器,本例中筆者勾選了“New environment using”項,選擇“Virtualenv”,可以看到其所用的解釋器正是前文所安裝的Python.exe(圖12)。

  圖12 PyCharm新建項目窗口

  設置完畢,點擊“Create”按鈕即可進入PyCharm主界面,可以看到新項目中已經自動生成了一個包含多行代碼的Python文件“main.py”,這是因為本例在新建項目窗口中筆者勾選了“Create a main.py welcome script”項。點擊菜單命令“Run→Run 'main.py'”,或者按Shift+F10快捷鍵,主界面下方即可實時運行該程序(圖13)。

  圖13 包含了預置文件的PyCharm文檔

  我們可以在此項目中添加新的文件。點擊菜單命令“File→New”打開新建對話框,可以選擇多種文件類型,如網頁文件、資源文件等,這裡筆者選擇創建Python文件(圖14)。

  圖14 PyCharm可以創建多種類型的文件

  接下來為新文件取一個名稱,我們繼續以上文中的斐波納契數列為例,所以將文件名設置為“Fibonacci”,按回車鍵回到主界面,輸入上文中斐波納契數列的示例代碼,然後點擊菜單命令“Run→Run”,在彈出的窗口中單擊剛剛創建的“Fibonacci.py”即可運行它並在主界面下方顯示出運行結果了。在手動輸入代碼時,能夠明顯感受到PyCharm的智能提示、自動補全、代碼檢查、快速修復等功能的強大,可以大大提高工作效率(圖15)。

  圖15 PyCharm的智能提示和自動補全功能

  PyCharm功能豐富,很難在一遍短文中講清楚,本文我們只需瞭解它的基本使用方法就夠了。下面我們將著重分析Python的語法和程序結構。

  Python的數據類型和數據結構

  計算機科學領域有一個著名的公式:計算機程序=數據結構+算法。這一公式表明,數據結構是程序的核心,而算法是解決問題的步驟。所以我們在學習某一編程語言的時候,很有必要先了解一下它的數據類型和數據結構。

  Python支持各種數據類型和數據結構,它們具有不同的屬性和特性,可以用於不同的任務。下面是Python中常用的數據類型和數據結構的介紹。

  Python簡單數據類型常見的有以下幾種(圖16):

  1、整數類型(int)

  整數類型是Python中最基本的數據類型之一。它代表整數值,可以是正數、負數或零。在Python中,整數沒有大小限制。

  2、浮點數類型(float)

  浮點數類型代表實數值,即包含小數點的數字。在Python中,浮點數也沒有大小限制。

  3、布爾類型(bool)

  布爾類型代表真和假兩個值,分別用True和False表示。布爾類型通常用於條件判斷和循環控制中。

  4、字符串類型(str)

  字符串類型代表文本,即一系列字符的序列。字符串用單引號、雙引號或三引號表示。三引號可以將多行文本括起來。Python中的字符串是不可變的,也就是說,一旦創建了字符串,就不能修改它的值。

  圖16 Python中常見的數據類型示例

  Python常見的數據結構有以下幾種(圖17):

  1、列表(list)

  列表是Python中最常用的數據結構之一,它是一個有序、可變的集合。列表中的元素可以是不同的數據類型。可以使用索引等操作來訪問和修改列表中的元素。列表用中括號“[]”表示。

  2、元組(tuple)

  元組是另一個有序的集合,它是不可變的。元組中的元素可以是不同的數據類型。與列表不同,元組不能修改。元組用小括號“()”表示。

  3、集合(set)

  集合可以包含不同的元素,它是無序的,沒有重複的值。集合可以用於集合運算,例如並集、交集和差集。集合用大括號“{}”表示。

  4、字典(dict)

  字典是Python中的映射類型,它是無序的鍵值對集合,沒有重複的值。每個鍵都必須是唯一的,但值可以重複。可以使用鍵來訪問和修改字典中的值。字典也用中括號“{}”表示,只是其中的數據都是鍵值對形式。

  圖17 Python常見的數據結構示例

  以上只是Python中最基本和最常用的數據類型及數據結構。除此之外,Python還有其他一些數據類型,例如字節類型(bytes)、字節數組(bytearray)、內存視圖(memoryview)、範圍類型(range)、空類型(none)等等,這裡不再一一細述。熟悉這些數據類型和數據結構的特性和用法,可以幫助我們更好地編寫Python程序。

  Python變量及賦值

  如前文所述,計算機程序就是數據+算法。當一個程序運行時,其相關數據被加載到內存中。內存如同一個大倉庫,被分割為一個個小庫房。當程序需要使用某個庫房時,首先要做一個聲明,表示要佔用該庫房,併為其貼上一個標籤。用編程術語來說,就是“聲明”了一個“變量”。聲明變量後,就可以在裡面儲存各色貨物(數據)了,編程術語稱之為“賦值”,這一操作通過等號運算符“=”來實現,等號左側為變量名稱,等號右側即賦予該變量的數據。以下代碼顯示了Python中的幾種賦值方式:

  x = 1

  x += 1

  x, y, z = 1, 2, "Hello!"

  x = y = z = 99.9

  第1種是基本賦值,使用“=”將值賦給變量。

  第2種是增量賦值,將一個值添加到變量的現有值中。假設變量x的初始值為1,那麼“x += 2”就將x的值變成了1加2等於3了。這其實是一種複合運算符賦值,如果將等號前的加號換成減號(x -= 2)則x將被賦值為1減2等於“-1”,如果將加號換成乘號(x *= 2)將得到1乘2等於2的值,以此類推。

  第3種是多元賦值,如果需要賦值的變量很多,可以將它們放到一行中進行賦值,只需用逗號將每個變量隔開即可,等號後面各變量對應的賦值也同樣用逗號隔開。

  第4種是鏈式賦值,適用於將同樣一個數據同時賦值給多個變量。

  理論上來說變量名可以由任意字符組成,不過Python對變量命名實際還是有一定限制的,規則要求:變量名只能由字母、數字和下劃線組成,且不能以數字開頭,另外變量名不能是Python關鍵字。比如“num_01”是合法變量名,而“01_num”則是非法變量名。再比如“my_var_name”是合法的,而帶空格的“my var name”則是非法的。另外像“if”、“while”、“for”等Python所保留的關鍵字是不能用來做變量名的。對於Python變量名還有一點需要注意,就是它是區分大小寫的,像“mytime”和“myTime”,這實際上是兩個變量。

  變量還有一個重要屬性,即變量的類型,它規定了變量能夠儲存什麼樣的數據。變量類型即上文所介紹的各類數據類型。其實所謂布爾類型(bool)、整數類型(int)、浮點數類型(float)、字符串類型(str)等等,只是一個形象說法,其本質就是定義了該變量佔用多大的空間,比如1個布爾變量只佔用1位空間,而一個整數變量則需要8位(1字節)空間。其他編程語言,比如C++、Java等,聲明一個變量時需要明確聲明其數據類型,而Python則省略了這一步,它直接通過所賦值的數據來自動確定該變量的類型,比如“x = 1”自動將x設置為整數類型,而“x = 99.9”則自動將x設置為浮點數類型。

  Python表達式和運算符

  如果說變量是程序的“詞彙”,那麼表達式就是程序的“句子”。詞彙量再豐富,不把它們組織成句子就毫無意義。Python中的表達式,是指由運算符、操作數(變量和值)和函數調用一起構成的組合,用以計算某種值的的公式。表達式總是會被計算並返回一個結果。

  運算符是構成表達式的重要元素,它相當於粘合劑將數據連接到一起,作為算法的“執行者”它對變量和值進行操作。Python中的運算符大致分為以下七大類。

  1、算術運算符:這類運算符執行基本的算術運算,如加(+)、減(-)、乘(*)、除(/)、模(%)和取冪(**)。以下代碼中,首先聲明瞭a、b兩個整數變量並分別賦值,然後對它們依次進行了加、除、模等算術運算,並通過print函數打印出運算結果(見其後的註釋語句,下同)。

  # Arithmetic operators

  a = 5

  b = 2

  print(a + b)  # Output: 7

  print(a / b)  # Output: 2.5

  print(a % b)  # Output: 1

  2、比較運算符:這類運算符比較兩個值並返回一個布爾值(True或False)。它們包括等於(==)、不等於(!=)、大於(>)、小於(<)、大於或等於(>=)和小於或等於(<=)。以下代碼首先聲明瞭x、y兩個整數變量並分別賦值,然後依次進行了大於和等於這兩種比較運算,其計算結果,x大於y是對的,所以返回結果True(真),而x==y顯然是錯誤的,所以返回結果為Flase(假)。

  # Comparison operators

  x = 10

  y = 5

  print(x > y)  # Output: True

  print(x == y)  # Output: False

  3、邏輯運算符:這類運算符對布爾值執行邏輯操作。它們包括邏輯與(AND)、邏輯或(OR)和邏輯非(NOT)。以下代碼首先聲明瞭a、b兩個布爾變量,分別賦值為True(真)和Flase(假)。同一件事不可能同時又真又假,這個判斷顯然是錯誤的,所以邏輯與運算“a and b”返回的結果是False(假)。而一件事或者是真或者是假,必居其一,這個判斷是正確的,所以邏輯或運算“(a or b)”返回的結果為True(真)。

  # Logical operators

  a = True

  b = False

  print(a and b)  # Output: False

  print(a or b)  # Output: True

  4、位運算符:這類運算符對二進制值執行位操作。包括按位與(&)、按位或(|)、按位異或(^)、按位取反(~)、左移(<<)、右移(>>)。以下代碼中,首先聲明瞭x、y兩個整數變量,不過它們的賦值採用的二進制,所以數字前面加上了“0b”標誌,其中二進制的1010等於十進制的10,二進制的1100等於十進制的12。最後兩行代碼分別對兩個變量進行了按位與以及按位或運算,得到了8和14的運算結果。

  # Bitwise operators

  x = 0b1010  # Binary representation of 10

  y = 0b1100  # Binary representation of 12

  print(x & y)  # Output: 0b100 (binary representation of 8)

  print(x | y)  # Output: 0b1110 (binary representation of 14)

  5、賦值運算符:這類運算符為變量賦值。上文已有詳細介紹,此處不再贅述,下面僅舉一個增量賦值的簡單示例,“a += 2”表示在原有的值5之上再加2,所以最終賦值結果是7。

  # Assignment operators

  a = 5

  a += 2

  print(a)  # Output: 7

  6、標識運算符:這類運算符比較兩個標識符的存儲單元(內存地址),判斷它們是不是引用自同一個對象(x is y),類似id(x) == id(y),如果引用的是同一個對象則返回True,如果不是則返回False。反之,則判斷兩個標識符是不是引用自不同的對象(x is not y)。以下代碼首先聲明瞭一個列表變量,接著又將該變量的地址賦值給了變量y,這兩個變量實際指向的是同一個內存地址,所以“x is y”的標識運算結果為True(真)。反之,變量z雖然也是一個列表,並且其值和x相同,但它們並不在同一個內存地址上,所以“x is z”的標識運算結果為False(假)。

  # Identity operators

  x = [1, 2, 3]

  y = x

  z = [1, 2, 3]

  print(x is y)  # True

  print(x is z)  # False

  7、成員關係運算符:這類運算符檢查值是否為序列或集合的成員,它們包括in和not in。以下代碼,通過“in”運算符指出2是列表numbers的成員,並以“not in”運算符指出6不是列表numbers的成員,這兩個運算都是對的,所以返回的結果都為True(真)。

  # Membership operators

  numbers = [1, 2, 3, 4, 5]

  print(2 in numbers)  # Output: True

  print(6 not in numbers)  # Output: True

  除了以上運算符表達式外,Python還有字符串表達式、函數調用表達式,以及針對列表、元組和字典進行運算的表達式。每一類表達式都有各自的特色,它們是編程的重要組成部分,理解它們如何工作對於編寫有效的代碼至關重要。                                                               

  表達式是用來計算的,但是如何控制計算的流程和邏輯以實現特殊的算法,就需要用到控制語句了。和其他編程語言一樣,Python的控制語句主要有三大類:順序語句、條件語句(if語句)和循環語句(for語句和while語句)。其中順序語句比較容易理解,即從先到後按順序一條一條執行代碼命令,我們上面的示例基本都是順序語句。接下來我們重點介紹條件語句和循環語句。

  條件語句

  條件語句用於根據條件決定程序的執行路徑,通常是實現分支選擇。它的基本語法如下:

  if condition:

  # 如果condition為True,則執行這裡的語句

  elif condition2:

  # 如果condition為False,但是condition2為True,則執行這裡的語句

  else:

  # 如果上述所有條件都為False,則執行這裡的語句

  Python的條件語句使用if、elif和else關鍵字,其中if語句是必須的,elif和else語句是可選的。條件語句中的condition和condition2可以是任何返回布爾值的表達式,例如比較操作、邏輯操作或函數調用等。

  下面是一個簡單的例子,演示如何使用條件語句判斷一個數是正數、負數還是零:

  num = 5

  if num > 0:

  print("這個數是正數")

  elif num == 0:

  print("這個數是零")

  else:

  print("這個數是負數")

  在這個例子中,如果num大於0,則打印出“這個數是正數”;否則,如果num等於0,則打印出“這個數是零”;當num小於0時,打印出“這個數是負數”。

  注意,Python中縮進非常重要,因為它是區分代碼塊的方式。條件語句中的每個代碼塊必須縮進相同的空格數,通常是四個空格。

  循環語句

  循環語句用於重複執行一段代碼。Python提供了兩種循環語句:for循環和while循環。

  for循環用於遍歷序列(例如列表、元組、字符串等)中的每個元素。for循環的基本語法如下:

  for variable in sequence:

  # 在這裡執行循環體代碼

  其中,variable是一個變量名,用於存儲序列中當前遍歷到的元素;sequence是一個序列,可以是列表、元組、字符串等。for循環將會遍歷sequence中的每個元素,並將其賦值給variable,然後執行循環體代碼,直到遍歷完所有元素。

  下面這個簡單的例子演示瞭如何使用for循環遍歷一個列表:

  numbers = [1, 2, 3, 4, 5]

  for num in numbers:

  print(num)

  這個例子中我們定義了一個列表numbers,然後使用for循環遍歷列表中的每個元素,並將其賦值給變量num,最後打印出num的值(圖18)。

  圖18 for循環遍歷列表後輸出

  while循環重複執行一段代碼,直到指定的條件不再滿足。while循環的基本語法如下:

  while condition:

  # 在這裡執行循環體代碼

  其中,condition是一個返回布爾值的表達式。只要condition為True,while循環就會一直執行循環體代碼,直到condition變為False為止。

  下面這個例子演示瞭如何使用while循環計算1到10的和:

  total = 0

  i = 1

  while i <= 10:

  total += i

  i += 1

  print("1到10的和為:", total)

  本例我們定義了變量total和i,然後使用while循環重複執行計算1到10的和的代碼,直到i大於10為止,最後打印出計算結果(圖19)。

  注意,在使用while循環時,必須確保條件可以在某個時刻變為False,否則循環將會無限執行下去,導致程序卡死。可以使用break語句或者修改循環變量的值來結束循環。

  圖19 while循環演示

  Python函數定義和調用

  函數是一組執行特定任務的代碼,它可以重複使用,從而提高代碼的重用性和可讀性。在Python中,函數定義通常為以下格式:

  def function_name(parameters):

  """

  Docstring:函數的文檔字符串,用於描述函數的用途和參數。

  """

  # code block to be executed

  return value # 可選

  上述定義中,def是函數定義的關鍵字;function_name是函數的名稱,由字母、數字和下劃線組成;parameters是函數的參數,這是可選的,可以是零個或多個;Docstring是函數的文檔字符串,用於描述函數的用途和參數,也是可選的;return是函數的返回值,同樣也是可選的。

  下面介紹一個簡單的Python函數示例:

  def greet(name):

  """

  此函數對作為參數傳送的人表達歡迎。

  """

  print("嗨, " + name + ",歡迎光臨!")

  greet("韓梅梅")

  本例定義了一個名為greet的函數,它帶有一個參數name,用於向函數傳遞一個名稱。函數的主體包括一個打印語句,它將問候語與傳遞的名稱一起打印。函數定義後,需要調用它才能夠執行,所以代碼的最後是函數調用語句,並傳遞了一個名稱“韓梅梅”(圖20)。

  圖20 Python函數定義和調用

  這只是一個簡單的例子,函數可以執行比這更復雜的任務。函數的優點之一,就是它們可以幫助你將代碼組織成更小、更易於管理的模塊,並將代碼分解為可維護的部分。函數還可以使用return語句返回值,允許將計算結果傳遞迴調用代碼。

  Python的程序結構

  上面學習了Python的基礎知識,現在就讓我們來了解一下完整的Python程序文件是什麼樣。一般來說,Python的程序結構通常由以下幾個部分分組成。

  1、導入模塊:在程序的開頭,我們通常需要導入需要使用的模塊。這些模塊包含Python內置的模塊,也包括第三方庫和自定義模塊。例如:

  import math

  import numpy as np

  from my_module import my_function

  2、全局變量和常量:在程序的頂部,通常定義一些全局變量和常量。這些變量可以在程序的任何地方訪問。例如:

  PI = 3.14159

  name = "John"

  3、函數定義:在程序的中間通常定義各種函數,用於執行特定的任務。

  4、主程序代碼:程序底部通常編寫主程序代碼,用於執行程序的主要功能。主程序代碼可以調用導入的模塊、全局變量和常量以及定義的函數。例如:

  import math

  PI = 3.14159

  def area_of_circle(radius):

  return PI * radius ** 2

  def main():

  r = 5

  area = area_of_circle(r)

  print("The area of the circle with radius", r, "is", area)

  if __name__ == '__main__':

  main()

  本例我們定義了一個計算圓的面積的函數area_of_circle(),然後在主程序代碼中使用該函數計算圓的面積並輸出結果。

  注意,在這個例子中,我們使用“if __name__ == '__main__':”語句來檢查是否在運行當前模塊。如果模塊是主程序運行的,它將執行main()函數,否則將忽略它。這個語句通常用於避免在模塊被導入時執行一些不必要的代碼。

  總之,在Python中,程序結構的規範化編寫有助於使代碼更易於閱讀、理解和維護。對於大型項目,通常需要更復雜的程序結構和更具體的組織方式,例如使用面向對象編程。

  Python編程實戰

  使用Python的優勢之一就是有大量的第三方庫可以使用,我們無需從頭開發,即可實現非常專業的應用。下面的實戰,我們通過Python加第三方庫的方式對Excel表格進行處理。

  假設我們有一個記錄全班同學考試成績的原始Excel文件,其中包括每個人的姓名、學號及各科成績的數據(圖21)。現在因為某種需求,要把其中的“姓名”和“語文成績”兩列數據提取出來,單獨保存為新的Excel文件。

  圖21 學生成績數據

  能夠處理Excel文件的第三方庫有不少,這裡我們選用的是Openpyxl。開始之前請先安裝它,操作極其簡單。打開Windows的命令提示符窗口,執行“pip install openpyxl”命令即可(圖22)。

  圖22 通過pip命令安裝Python第三方庫

  我們也可以在PyCharm中安裝這個庫。點擊窗口底部的“Python Packages”選項打開一個窗格,然後在搜索框中輸入“openpyxl”,找到之後點擊右側的“Install package”按鈕即可安裝(圖23)。

  圖23 在PyCharm中安裝Openpyxl庫

  需要注意的是,Openpyxl庫只支持xlsx格式的Excel文件,不支持舊版的xls文件。萬事俱備,接下來就可以PyCharm中編寫Python程序了:

  import openpyxl

  # 打開原始Excel表格文件

  workbook = openpyxl.load_workbook('原始數據.xlsx')

  # 選擇原始Excel表格中的第一個工作表

  worksheet = workbook.active

  # 創建一個新的工作簿

  new_workbook = openpyxl.Workbook()

  # 選擇新工作簿中的第一個工作表

  new_worksheet = new_workbook.active

  # 將原始Excel表格中的“姓名”和“語文成績”兩列數據提取出來,並添加到新工作表中

  for row in worksheet.iter_rows(values_only=True):

  name, score = row[0], row[3]

  new_worksheet.append([name, score])

  # 保存新工作簿到Excel文件中

  new_workbook.save('姓名與語文成績.xlsx')

  上述程序首先通過“import openpyxl”語句導入Openpyxl庫,然後使用“openpyxl.load_workbook()”函數打開原始Excel表格文件,該函數將返回一個Workbook對象,存儲在名為workbook的變量中。接下來,使用workbook.active選擇原始Excel表格中的第一個工作表,該工作表將作為程序讀取數據的來源。

  接著,使用“openpyxl.Workbook()”函數創建一個新的工作簿,將返回一個Workbook對象,存儲在名為new_workbook的變量中。使用new_workbook.active選擇新工作簿中的第一個工作表,該工作表將作為程序寫入數據的目標。

  然後,使用“worksheet.iter_rows()”函數迭代原始Excel表格中的每一行數據,其中values_only=True表示只返回單元格的值。在每次迭代中,使用row[0]和row[3]提取出當前行中的“姓名”和“語文成績”兩列數據,分別存儲在名為name和score的變量中。最後,使用“new_worksheet.append()”函數將name和score寫入到新工作表中。

  最後,使用“new_workbook.save()”函數將新工作簿中的數據保存到Excel文件中,文件名為“姓名與語文成績.xlsx”。

  將原始數據Excel文件和Python程序文件放到同一個文件夾中,按Shift+F10鍵運行程序,即可在該文件夾中保存一個僅有“姓名”和“語文成績”兩列的新的Excel文件了(圖24)。

  圖24 運行程序得到新的Excel文件

  當然,Python編程內容豐富,不是一篇文章就能介紹完的。如果本文能為大家學習Python帶來些許的幫助,筆者也就知足了。CF

原文刊登於2022 年 12月15 日出版《電腦愛好者》第 24 期

END

更多精彩,敬請期待……

Scroll to Top