Python如此神奇,讓繁瑣工作自動化

      網友投稿 789 2025-04-02

      “你在2個小時里完成的事,我們3個人要做兩天。”21世紀早期,我的大學室友在一個電子產品零售商店工作。商店偶爾會收到一份電子表格,其中包含競爭對手的數千種產品的價格。由3個員工組成的團隊,會將這個電子表格打印在一疊厚厚的紙上,然后3個人分一下。針對每個產品價格,他們會查看自己商店的價格,并記錄競爭對手價格較低的所有產品。這通常會花幾天的時間。

      “如果你有打印件的原始文件,我會寫一個程序來做這件事。”我的室友告訴他們,當時他看到他們坐在地板上,周圍都是散落堆疊的紙張。

      幾個小時后,他寫了一個簡短的程序,從文件讀取競爭對手的價格,在商店的數據庫中找到該產品,并記錄競爭對手是否更便宜。他當時還是編程新手,花了許多時間在一本編程書籍中查看文檔。實際上程序只花了幾秒鐘運行。我的室友和他的同事們那天享受了超長的午餐。

      這就是計算機編程的威力。計算機就像瑞士***,可以用來完成數不清的任務。許多人花上數小時點擊鼠標和敲打鍵盤,執行重復的任務,卻沒有意識到,如果他們給機器正確的指令,機器就能在幾秒鐘內完成他們的工作。

      軟件是我們今天使用的許多工具的核心:幾乎每個人都使用社交網絡來進行交流,許多人的手機中都有連接因特網的計算機,大多數辦公室工作都涉及操作計算機來完成工作。因此,對編程人才的需求暴漲。無數的圖書、交互式網絡教程和開發者新兵訓練營,承諾將有雄心壯志的初學者變成軟件工程師,獲得6位數的薪水。

      這本《Python編程快速上手——讓繁瑣工作自動化》不是針對這些人的。它是針對所有其他的人。

      就它本身來說,這本書不會讓你變成一個職業軟件開發者,就像幾節吉他課程不會讓你變成一名搖滾巨星。但如果你是辦公室職員、管理者、學術研究者,或使用計算機來工作或娛樂的任何人,你將學到編程的基本知識,這樣就能將下面這樣一些簡單的任務自動化:

      移動并重命名幾千個文件,將它們分類,放入文件夾;

      填寫在線表單,不需要打字;

      在網站更新時,從網站下載文件或復制文本;

      讓計算機向客戶發出短信通知;

      更新或格式化Excel電子表格;

      檢查電子郵件并發出預先寫好的回復。

      對人來說,這些任務簡單,但很花時間。它們通常很瑣碎、很特殊,沒有現成的軟件可以完成。有一點編程知識,就可以讓計算機為你完成這些任務。

      關于這本書

      購買:http://item.jd.com/11943853.html

      干貨分享:Python基礎

      Python編程語言有許多語法結構、標準庫函數和交互式開發環境功能。好在,你可以忽略大多數內容。你只需要學習部分內容,就能編寫一些方便的小程序。

      但在動手之前,你必須學習一些基本編程概念。就像魔法師培訓,你可能認為這些概念既深奧又啰嗦,但有了一些知識和實踐,你就能像魔法師一樣指揮你的計算機,完成難以置信的事情。

      本章有幾個例子,我們鼓勵你在交互式環境中輸入它們。交互式環境讓你每次執行一條Python指令,并立即顯示結果。使用交互式環境對于了解基本Python指令的行為是很好的,所以你在閱讀時要試一下。做過的事比僅僅讀過的內容,更令人印象深刻。

      1 在交互式環境中輸入表達式

      啟動IDLE就運行了交互式環境,這是和Python一起安裝的。在Windows上,打開“開始”菜單,選擇“All ProgramsPython 3.3”,然后選擇“IDLE(Python GUI)”。在OS X上,選擇“ApplicationsMacPython 3.3IDLE”。在Ubuntu上,打開新的終端窗口并輸入idle3。

      一個窗口會出現,包含>>>提示符,這就是交互式環境。在提示符后輸入2 + 2,讓Python做一些簡單的算術。

      IDLE窗口現在應該顯示下面這樣的文本:

      在Python中,2 + 2稱為“表達式”,它是語言中最基本的編程結構。表達式包含“值”(例如2)和“操作符”(例如+),并且總是可以求值(也就是歸約)為單個值。這意味著在Python代碼中,所有使用表達式的地方,也可以使用一個值。

      在前面的例子中,2 + 2被求值為單個值4。沒有操作符的單個值也被認為是一個表達式,盡管它求值的結果就是它自己,像下面這樣:

      錯誤沒關系!

      如果程序包含計算機不能理解的代碼,就會崩潰,這將導致Python顯示錯誤信息。錯誤信息并不會破壞你的計算機,所以不要害怕犯錯誤。“崩潰”只是意味著程序意外地停止執行。

      如果你希望對一條錯誤信息了解更多,可以在網上查找這條信息的準確文本,找到關于這個錯誤的更多內容。也可以查看http://nostarch.com/automatestuff/,這里有常見的Python錯誤信息和含義的列表。

      Python表達式中也可以使用大量其他操作符。例如,表 1-1 列出了Python的所有數學操作符。

      表1-1 數學操作符,優先級從高到低

      操作符

      操作

      例子

      求值為

      **

      指數

      2 ** 3

      8

      %

      取模/取余數

      22 % 8

      6

      //

      整除/商數取整

      22 // 8

      2

      /

      除法

      22 / 8

      2.75

      *

      乘法

      3 * 5

      15

      -

      減法

      5 - 2

      3

      +

      加法

      2 + 2

      4

      數學操作符的操作順序(也稱為“優先級”)與數學中類似。**操作符首先求值,接下來是-*、/、//和%操作符,從左到右。+和-操作符最后求值,也是從左到右。如果需要,可以用括號來改變通常的優先級。在交互式環境中輸入下列表達式:

      在每個例子中,作為程序員,你必須輸入表達式,但Python完成較難的工作,將它求值為單個值。Python將繼續求值表達式的各個部分,直到它成為單個值,如圖1-1所示。

      圖1-1 表達式求值將它歸約為單個值

      將操作符和值放在一起構成表達式的這些規則,是 Python 編程語言的基本部分,就像幫助我們溝通的語法規則一樣。下面是例子:

      This is a grammatically correct English sentence.

      This grammatically is sentence not English correct a.

      第二行很難解釋,因為它不符合英語的規則。類似地,如果你輸入錯誤的 Python指令,Python也不能理解,就會顯示出錯誤信息,像下面這樣:

      你總是可以在交互式環境中輸入一條指令,檢查它是否能工作。不要擔心會弄壞計算機:最壞的情況就是Python顯示出錯信息。專業的軟件開發者在編寫代碼時,常常會遇到錯誤信息。

      2 整型、浮點型和字符串數據類型

      記住,表達式是值和操作符的組合,它們可以通過求值成為單個值。“數據類型”是一類值,每個值都只屬于一種數據類型。表1-2列出了Python中最常見的數據類型。例如,值-2和30屬于“整型”值。整型(或int)數據類型表明值是整數。帶有小數點的數,如3.14,稱為“浮點型”(或float)。請注意,盡管42是一個整型,但42.0是一個浮點型。

      表1-2 常見數據類型

      數據類型

      例子

      整型

      -2, -1, 0, 1, 2, 3, 4, 5

      浮點型

      -1.25, -1.0, - -0.5, 0.0, 0.5, 1.0, 1.25

      字符串

      'a', 'aa', 'aaa', 'Hello!', '11 cats'

      Python程序也可以有文本值,稱為“字符串”,或strs(發音為“stirs”)。總是用單引號(')包圍住字符串(例如'Hello'或'Goodbye cruel world!'),這樣Python就知道字符串的開始和結束。甚至可以有沒有字符的字符串,稱為“空字符串”。第4章更詳細地解釋了字符串。

      如果你看到錯誤信息SyntaxError: EOL while scanning string literal,可能是忘記了字符串末尾的單引號,如下面的例子所示:

      3 字符串連接和復制

      根據操作符之后的值的數據類型,操作符的含義可能會改變。例如,在操作兩個整型或浮點型值時,+是相加操作符。但是,在用于兩個字符串時,它將字符串連接起來,成為“字符串連接”操作符。在交互式環境中輸入以下內容:

      該表達式求值為一個新字符串,包含了兩個字符串的文本。但是,如果你對一個字符串和一個整型值使用加操作符,Python就不知道如何處理,它將顯示一條錯誤信息。

      錯誤信息Can't convert 'int' object to str implicitly表示Python認為,你試圖將一個整數連接到字符串'Alice'。代碼必須顯式地將整數轉換為字符串,因為Python不能自動完成轉換。(1.6節“程序剖析”在討論函數時,將解釋數據類型轉換。)

      Python如此神奇,讓繁瑣工作自動化

      在用于兩個整型或浮點型值時,-*-操作符表示乘法。但-*-操作符用于一個字符串值和一個整型值時,它變成了“字符串復制”操作符。在交互式環境中輸入一個字符串乘一個數字,看看效果。

      該表達式求值為一個字符串,它將原來的字符串重復若干次,次數就是整型的值。字符串復制是一個有用的技巧,但不像字符串連接那樣常用。

      *操作符只能用于兩個數字(作為乘法),或一個字符串和一個整型(作為字符串復制操作符)。否則,Python將顯示錯誤信息。

      Python不理解這些表達式是有道理的:你不能把兩個單詞相乘,也很難將一個任意字符串復制小數次。

      4 在變量中保存值

      “變量”就像計算機內存中的一個盒子,其中可以存放一個值。如果你的程序稍后將用到一個已求值的表達式的結果,就可以將它保存在一個變量中。

      4.1 賦值語句

      用“賦值語句”將值保存在變量中。賦值語句包含一個變量名、一個等號(稱為賦值操作符),以及要存儲的值。如果輸入賦值語句spam = 42,那么名為spam的變量將保存一個整型值42。

      可以將變量看成一個帶標簽的盒子,值放在其中,如圖1-2所示。

      圖1-2 spam = 42 就像是告訴程序“變量spam現在有整數42放在里面”

      例如,在交互式環境中輸入以下內容:

      第一次存入一個值,變量就被“初始化”(或創建)?。此后,可以在表達式中使用它,以及其他變量和值?。如果變量被賦了一個新值,老值就被忘記了?。這就是為什么在例子結束時,spam求值為42,而不是40。這稱為“覆寫”該變量。在交互式環境中輸入以下代碼,嘗試覆寫一個字符串:

      就像圖1-3中的盒子,這個例子中的spam變量保存了'Hello',直到你用'Goodbye'替代它。

      圖1-3 如果一個新值賦給變量,老值就被遺忘了

      4.2 變量名

      表1-3中有一些合法變量名的例子。你可以給變量取任何名字,只要它遵守以下3條規則:

      1.只能是一個詞。

      2.只能包含字母、數字和下劃線。

      3.不能以數字開頭。

      表1-3 有效和無效的變量名

      有效的變量名

      無效的變量名

      balance

      current-balance(不允許中劃線)

      currentBalance

      current balanc(不允許空格)

      current_balance

      4account(不允許數字開頭)

      _spam

      42(不允許數字開頭)

      SPAM

      total_$um(不允許$這樣的特殊字符)

      account4

      'hello'(不允許'這樣的特殊字符)

      變量名是區分大小寫的。這意味著,spam、 SPAM、Spam和sPaM是4個不同的變量。變量用小寫字母開頭是Python的慣例。

      本書的變量名使用了駝峰形式,沒有用下劃線。也就是說,變量名用lookLikeThis,而不是looking_like_this。一些有經驗的程序員可能會指出,官方的Python代碼風格PEP 8,即應該使用下劃線。我喜歡駝峰式,這沒有錯,并認為PEP 8本身“愚蠢的一致性是頭腦狹隘人士的心魔”:

      好的變量名描述了它包含的數據。設想你搬到一間新屋子,搬家紙箱上標的都是“東西”。你永遠找不到任何東西!本書的例子和許多Python的文檔,使用spam、eggs和bacon等變量名作為一般名稱(受到Monty Python的“Spam”短劇的影響),但在你的程序中,具有描述性的名字有助于提高代碼可讀性。

      5 第一個程序

      雖然交互式環境對于一次運行一條 Python指令很好,但要編寫完整的Python程序,就需要在文件編輯器中輸入指令。“文件編輯器”類似于Notepad或TextMate這樣的文本編輯器,它有一些針對輸入源代碼的特殊功能。要在IDLE中打開文件編輯器,請選擇FileNew ?Window。

      出現的窗口中應該包含一個光標,等待你輸入,但它與交互式環境不同。在交互式環境中,按下回車,就會執行Python指令。文件編輯器允許輸入許多指令,保存為文件,并運行該程序。下面是區別這兩者的方法:

      交互式環境窗口總是有>>>提示符。

      文件編輯器窗口沒有>>>提示符。

      現在是創建第一個程序的時候了!在文件編輯器窗口打開后,輸入以下內容:

      在輸入完源代碼后保存它,這樣就不必在每次啟動IDLE時重新輸入。從文件編輯器窗口頂部的菜單,選擇File?Save As。在“Save As”窗口中,在輸入框輸入hello.py,然后點擊“Save”。

      在輸入程序時,應該過一段時間就保存你的程序。這樣,如果計算機崩潰,或者不小心退出了IDLE,也不會丟失代碼。作為快捷鍵,可以在Windows和Linux上按Ctrl-S,在OS X上按?-S,來保存文件。

      在保存文件后,讓我們來運行程序。選擇Run?Run Module,或按下F5鍵。程序將在交互式環境窗口中運行,該窗口是首次啟動IDLE時出現的。記住,必須在文件編輯器窗口中按F5,而不是在交互式環境窗口中。在程序要求輸入時,輸入你的名字。在交互式環境中,程序輸出應該看起來像這樣:

      如果沒有更多代碼行要執行,Python程序就會“中止”。也就是說,它停止運行。(也可以說Python程序“退出”了。)

      可以通過點擊窗口上部的X,關閉文件編輯器。要重新加載一個保存了的程序,就在菜單中選擇File?Open。現在請這樣做,在出現的窗口中選擇hello.py,并點擊“Open”按鈕。前面保存的程序hello.py應該在文件編輯器窗口中打開。

      6 程序剖析

      新程序在文件編輯器中打開后,讓我們快速看一看它用到的Python指令,逐一查看每行代碼。

      6.1 注釋

      下面這行稱為“注釋”。

      Python會忽略注釋,你可以用它們來寫程序注解,或提醒自己代碼試圖完成的事。這一行中,#標志之后的所有文本都是注釋。

      有時候,程序員在測試代碼時,會在一行代碼前面加上#,臨時刪除它。這稱為“注釋掉”代碼。在你想搞清楚為什么程序不工作時,這樣做可能有用。稍后,如果你準備還原這一行代碼,可以去掉#。

      Python也會忽略注釋之后的空行。在程序中,想加入空行時就可以加入。這會讓你的代碼更容易閱讀,就像書中的段落一樣。

      6.2 print()函數

      print()函數將括號內的字符串顯示在屏幕上。

      代碼行print('Hello world!')表示“打印出字符串'Hello world!'的文本”。Python執行到這行時,你告訴Python調用print()函數,并將字符串“傳遞”給函數。傳遞給函數的值稱為“參數”。請注意,引號沒有打印在屏幕上。它們只是表示字符串的起止,不是字符串的一部分。

      也可以用這個函數在屏幕上打印出空行,只要調用print()就可以了,括號內沒有任何東西。

      在寫函數名時,末尾的左右括號表明它是一個函數的名字。這就是為什么在本書中你會看到print(),而不是print。第2章更詳細地探討了函數。

      6.3 input()函數

      函數等待用戶在鍵盤上輸入一些文本,并按下回車鍵。

      這個函數求值為一個字符串,即用戶輸入的文本。前面的代碼行將這個字符串賦給變量myName。

      你可以認為input()函數調用是一個表達式,它求值為用戶輸入的任何字符串。如果用戶輸入'Al',那么該表達式就求值為myName = 'Al'。

      6.4 打印用戶的名字

      接下來的print()調用,在括號間包含表達式'It is good to meet you, ' + myName。

      要記住,表達式總是可以求值為一個值。如果'Al'是上一行代碼保存在myName中的值,那么這個表達式就求值為'It is good to meet you, Al'。這個字符串傳給print(),它將輸出到屏幕上。

      6.5 len()函數

      你可以向len()函數傳遞一個字符串(或包含字符串的變量),然后該函數求值為一個整型值,即字符串中字符的個數。

      在交互式環境中輸入以下內容試一試:

      就像這些例子,len(myName)求值為一個整數。然后它被傳遞給print(),在屏幕上顯示。請注意,print()允許傳入一個整型值或字符串。但如果在交互式環境中輸入以下內容,就會報錯:

      導致錯誤的原因不是print()函數,而是你試圖傳遞給print()的表達式。如果在交互式環境中單獨輸入這個表達式,也會得到同樣的錯誤。

      報錯是因為,只能用+操作符加兩個整數,或連接兩個字符串。不能讓一個整數和一個字符串相加,因為這不符合Python的語法。可以使用字符串版本的整數,修復這個錯誤。這在下一節中解釋。

      6.6 str()、int()和float()函數

      如果想要連接一個整數(如29)和一個字符串,再傳遞給print(),就需要獲得值'29'。它是29的字符串形式。str()函數可以傳入一個整型值,并求值為它的字符串形式,像下面這樣:

      因為str(29)求值為’29’,所以表達式'I am ' + str(29) + ' years old.'求值為'I am ' + '29' + ' years old.',它又求值為'I am 29 years old.'。這就是傳遞給print()函數的值。

      str()、int()和float()函數將分別求值為傳入值的字符串、整數和浮點數形式。請嘗試用這些函數在交互式環境中轉換一些值,看看會發生什么。

      前面的例子調用了str()、int()和float()函數,向它們傳入其他數據類型的值,得到了字符串、整型或浮點型的值。

      如果想要將一個整數或浮點數與一個字符串連接,str()函數就很方便。如果你有一些字符串值,希望將它們用于數學運算,int()函數也很有用。例如,input()函數總是返回一個字符串,即便用戶輸入的是一個數字。在交互式環境中輸入spam = input(),在它等待文本時輸入101。

      保存在spam中的值不是整數101,而是字符串'101'。如果想要用spam中的值進行數學運算,那就用int()函數取得spam的整數形式,然后將這個新值存在spam中。

      現在你應該能將spam變量作為整數,而不是字符串使用。

      請注意,如果你將一個不能求值為整數的值傳遞給int(),Python將顯示出錯信息。

      如果需要對浮點數進行取整運算,也可以用int()函數。

      在你的程序中,最后3行使用了函數int()和str(),取得適當數據類型的值。

      myAge變量包含了input()函數返回的值。因為input()函數總是返回一個字符串(即使用戶輸入的是數字),所以你可以使用int(myAge)返回字符串的整型值。這個整型值隨后在表達式int(myAge) + 1中與1相加。

      相加的結果傳遞給str()函數:str(int(myAge) + 1)。然后,返回的字符串與字符串'You will be '和' in a year.'連接,求值為一個更長的字符串。這個更長的字符串最終傳遞給print(),在屏幕上顯示。

      假定用戶輸入字符串'4',保存在myAge中。字符串'4'被轉換為一個整型,所以你可以對它加1。結果是5。str()函數將這個結果轉化為字符串,這樣你就可以將它與第二個字符串'in a year.'連接,創建最終的消息。這些求值步驟如圖1-4所示。

      文本和數字相等判斷

      圖1-4 如果4保存在myAge中,求值的步驟

      7 小結

      你可以用一個計算器來計算表達式,或在文本處理器中輸入字符串連接。甚至可以通過復制粘貼文本,很容易地實現字符串復制。但是表達式以及組成它們的值(操作符、變量和函數調用),才是構成程序的基本構建塊。一旦你知道如何處理這些元素,就能夠用Python操作大量的數據。

      最好是記住本章中介紹的不同類型的操作符(+、-、-*-、/、//、%和-**-是數學操作符,+和-*-是字符串操作符),以及3種數據類型(整型、浮點型和字符串)。

      我們還介紹了幾個不同的函數。print()和input()函數處理簡單的文本輸出(到屏幕)和輸入(通過鍵盤)。len()函數接受一個字符串,并求值為該字符串中字符的數目。

      在下一章中,你將學習如何告訴Python根據它擁有的值,明智地決定什么代碼要運行,什么代碼要跳過,什么代碼要重復。這稱為“控制流”,它讓你編寫程序來做出明智的決定。

      本文轉載自異步社區

      AI Python 面向對象編程

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:【云駐共創】華為全聯接2021 智能基座專場
      下一篇:為什么我插入的圖片、形狀、文字、都看不到呢?(圖片在文字上方不顯示)
      相關文章
      亚洲视频国产视频| 亚洲成人午夜在线| 精品亚洲国产成人| 亚洲的天堂av无码| 亚洲欧洲国产日韩精品| 亚洲成Av人片乱码色午夜| 亚洲人成色77777| 亚洲人成色77777| 亚洲成av人片天堂网| 亚洲av无码片在线播放| 亚洲AV无码久久精品狠狠爱浪潮 | 亚洲精品国产美女久久久| JLZZJLZZ亚洲乱熟无码| 亚洲中文字幕无码专区| 国产亚洲av片在线观看18女人| 亚洲区不卡顿区在线观看| 亚洲性久久久影院| 中文字幕精品亚洲无线码二区 | 亚洲国产精品成人一区| 国产乱辈通伦影片在线播放亚洲| 在线观看亚洲免费| 亚洲精品97久久中文字幕无码| 亚洲av片一区二区三区| 亚洲人成人网站在线观看| 久久久久久亚洲精品不卡| 亚洲中文字幕第一页在线| 国产成人无码综合亚洲日韩| 久久精品国产亚洲香蕉| 精品亚洲成a人片在线观看| 亚洲日本国产精华液| 亚洲宅男精品一区在线观看| 亚洲欧美国产欧美色欲| 青青青国产色视频在线观看国产亚洲欧洲国产综合 | 亚洲中文字幕成人在线| 亚洲女同成av人片在线观看 | 亚洲hairy多毛pics大全| 天堂亚洲免费视频| 色噜噜亚洲精品中文字幕| 亚洲国产a∨无码中文777| 亚洲综合久久成人69| 国产91在线|亚洲|