开心六月综合激情婷婷|欧美精品成人动漫二区|国产中文字幕综合色|亚洲人在线成视频

    1. 
      
        <b id="zqfy3"><legend id="zqfy3"><fieldset id="zqfy3"></fieldset></legend></b>
          <ul id="zqfy3"></ul>
          <blockquote id="zqfy3"><strong id="zqfy3"><dfn id="zqfy3"></dfn></strong></blockquote>
          <blockquote id="zqfy3"><legend id="zqfy3"></legend></blockquote>
          打開APP
          userphoto
          未登錄

          開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

          開通VIP
          原來學(xué)Python最好的書是這一本?它在bookauthority里排名第三
          程序員書屋 2019-10-22 09:05:15

          有一本學(xué)Python的書,也許你還沒有關(guān)注到,它在bookauthority的Python類目中排名第三,要?jiǎng)龠^太多太多的Python書。那就是《Python編程快速上手 讓繁瑣工作自動(dòng)化》。

          就它本身來說,這本書不會(huì)讓你變成一個(gè)職業(yè)軟件開發(fā)者,就像幾節(jié)吉他課程不會(huì)讓你變成一名搖滾巨星。但如果你是辦公室職員、管理者、學(xué)術(shù)研究者,或使用計(jì)算機(jī)來工作或娛樂的任何人,你將學(xué)到編程的基本知識(shí),這樣就能將下面這樣一些簡(jiǎn)單的任務(wù)自動(dòng)化:

          • 移動(dòng)并重命名幾千個(gè)文件,將它們分類,放入文件夾;
          • 填寫在線表單,不需要打字;
          • 在網(wǎng)站更新時(shí),從網(wǎng)站下載文件或復(fù)制文本;
          • 讓計(jì)算機(jī)向客戶發(fā)出短信通知;
          • 更新或格式化Excel電子表格;
          • 檢查電子郵件并發(fā)出預(yù)先寫好的回復(fù)。

          對(duì)人來說,這些任務(wù)簡(jiǎn)單,但很花時(shí)間。它們通常很瑣碎、很特殊,沒有現(xiàn)成的軟件可以完成。有一點(diǎn)編程知識(shí),就可以讓計(jì)算機(jī)為你完成這些任務(wù)。

          本書沒有設(shè)計(jì)成參考手冊(cè),它是初學(xué)者指南。編碼風(fēng)格有時(shí)候違反最佳實(shí)踐(例如,有些程序使用全局變量),但這是一種折中,讓代碼更簡(jiǎn)單,以便學(xué)習(xí)。

          下面分享一下第一章節(jié),希望你的Python編程語言可以從這里開始。

          Python基礎(chǔ)

          Python編程語言有許多語法結(jié)構(gòu)、標(biāo)準(zhǔn)庫(kù)函數(shù)和交互式開發(fā)環(huán)境功能。好在,你可以忽略大多數(shù)內(nèi)容。你只需要學(xué)習(xí)部分內(nèi)容,就能編寫一些方便的小程序。

          但在動(dòng)手之前,你必須學(xué)習(xí)一些基本編程概念。就像魔法師培訓(xùn),你可能認(rèn)為這些概念既深?yuàn)W又啰嗦,但有了一些知識(shí)和實(shí)踐,你就能像魔法師一樣指揮你的計(jì)算機(jī),完成難以置信的事情。

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

          1.1 在交互式環(huán)境中輸入表達(dá)式

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

          一個(gè)窗口會(huì)出現(xiàn),包含>>>提示符,這就是交互式環(huán)境。在提示符后輸入2 + 2,讓Python做一些簡(jiǎn)單的算術(shù)。

          >>> 2 + 2
          4

          IDLE窗口現(xiàn)在應(yīng)該顯示下面這樣的文本:

          Python 3.3.2 (v3.3.2:d047928ae3f6, May 16 2013, 00:06:53) [MSC v.1600 64 bit
          (AMD64)] on win32
          Type "copyright", "credits" or "license()" for more information.
          >>> 2 + 2
          4
          >>>

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

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

          >>> 2
          2

          錯(cuò)誤沒關(guān)系!

          如果程序包含計(jì)算機(jī)不能理解的代碼,就會(huì)崩潰,這將導(dǎo)致Python顯示錯(cuò)誤信息。錯(cuò)誤信息并不會(huì)破壞你的計(jì)算機(jī),所以不要害怕犯錯(cuò)誤?!氨罎ⅰ敝皇且馕吨绦蛞馔獾赝V箞?zhí)行。

          如果你希望對(duì)一條錯(cuò)誤信息了解更多,可以在網(wǎng)上查找這條信息的準(zhǔn)確文本,找到關(guān)于這個(gè)錯(cuò)誤的更多內(nèi)容。也可以查看http://nostarch.com/automatestuff/,這里有常見的Python錯(cuò)誤信息和含義的列表。

          Python表達(dá)式中也可以使用大量其他操作符。例如,表 1-1 列出了Python的所有數(shù)學(xué)操作符。

          表1-1 數(shù)學(xué)操作符

          數(shù)學(xué)操作符的操作順序(也稱為“優(yōu)先級(jí)”)與數(shù)學(xué)中類似。**操作符首先求值,接下來是-*、/、//和%操作符,從左到右計(jì)算。+和-操作符最后求值,也是從左到右計(jì)算。如果需要,可以用括號(hào)來改變通常的優(yōu)先級(jí)。在交互式環(huán)境中輸入下列表達(dá)式:

          >>> 2 + 3 * 6
          20
          >>> (2 + 3) * 6
          30
          >>> 48565878 * 578453
          28093077826734
          >>> 2 ** 8
          256
          >>> 23 / 7
          3.2857142857142856
          >>> 23 // 7
          3
          >>> 23 % 7
          2
          >>> 2 + 2
          4
          >>> (5 - 1) * ((7 + 1) / (3 - 1))
          16.0

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

          圖1-1 表達(dá)式求值將它歸約為單個(gè)值

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

          This is a grammatically correct English sentence.

          This grammatically is sentence not English correct a.

          第二行很難解釋,因?yàn)樗环嫌⒄Z的規(guī)則。類似地,如果你輸入錯(cuò)誤的 Python指令,Python也不能理解,就會(huì)顯示出錯(cuò)誤信息,像下面這樣:

          >>> 5 +
          File "<stdin>", line 1
          5 +
          ^
          SyntaxError: invalid syntax
          >>> 42 + 5 + * 2
          File "<stdin>", line 1
          42 + 5 + * 2
          ^
          SyntaxError: invalid syntax

          你總是可以在交互式環(huán)境中輸入一條指令,檢查它是否能工作。不要擔(dān)心會(huì)弄壞計(jì)算機(jī):最壞的情況就是Python顯示出錯(cuò)信息。專業(yè)的軟件開發(fā)者在編寫代碼時(shí),常常會(huì)遇到錯(cuò)誤信息。

          1.2 整型、浮點(diǎn)型和字符串?dāng)?shù)據(jù)類型

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

          表1-2 常見數(shù)據(jù)類型

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

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

          >>> 'Hello world!
          SyntaxError: EOL while scanning string literal

          1.3 字符串連接和復(fù)制

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

          >>> 'Alice' + 'Bob'
          'AliceBob'

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

          >>> 'Alice' + 42
          Traceback (most recent call last):
          File "<pyshell#26>", line 1, in <module>
          'Alice' + 42
          TypeError: Can't convert 'int' object to str implicitly

          錯(cuò)誤信息Can't convert 'int' object to str implicitly表示Python認(rèn)為,你試圖將一個(gè)整數(shù)連接到字符串'Alice'。代碼必須顯式地將整數(shù)轉(zhuǎn)換為字符串,因?yàn)镻ython不能自動(dòng)完成轉(zhuǎn)換。(1.6節(jié)“程序剖析”在討論函數(shù)時(shí),將解釋數(shù)據(jù)類型轉(zhuǎn)換。)

          在用于兩個(gè)整型或浮點(diǎn)型值時(shí),-*-操作符表示乘法。但-*-操作符用于一個(gè)字符串值和一個(gè)整型值時(shí),它變成了“字符串復(fù)制”操作符。在交互式環(huán)境中輸入一個(gè)字符串乘一個(gè)數(shù)字,看看效果。

          >>> 'Alice' * 5
          'AliceAliceAliceAliceAlice'

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

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

          >>> 'Alice' * 'Bob'
          Traceback (most recent call last):
          File "<pyshell#32>", line 1, in <module>
          'Alice' * 'Bob'
          TypeError: can't multiply sequence by non-int of type 'str'
          >>> 'Alice' * 5.0
          Traceback (most recent call last):
          File "<pyshell#33>", line 1, in <module>
          'Alice' * 5.0
          TypeError: can't multiply sequence by non-int of type 'float'

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

          1.4 在變量中保存值

          “變量”就像計(jì)算機(jī)內(nèi)存中的一個(gè)盒子,其中可以存放一個(gè)值。如果你的程序稍后將用到一個(gè)已求值的表達(dá)式的結(jié)果,就可以將它保存在一個(gè)變量中。

          1.4.1 賦值語句

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

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

          圖1-2 spam = 42 就像是告訴程序“變量spam現(xiàn)在有整數(shù)42放在里面”

          例如,在交互式環(huán)境中輸入以下內(nèi)容:

          ? >>> spam = 40
           >>> spam
           40
           >>> eggs = 2
          ? >>> spam + eggs
           42
           >>> spam + eggs + spam
           82
          ? >>> spam = spam + 2
           >>> spam
           42

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

          >>> spam = 'Hello'
          >>> spam
          'Hello'
          >>> spam = 'Goodbye'
          >>> spam
          'Goodbye'

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

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

          1.4.2 變量名

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

          1.只能是一個(gè)詞。

          2.只能包含字母、數(shù)字和下劃線。

          3.不能以數(shù)字開頭。

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

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

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

          “一致地滿足風(fēng)格指南是重要的。但最重要的是,知道何時(shí)要不一致,因?yàn)橛袝r(shí)候風(fēng)格指南就是不適用。如果有懷疑,請(qǐng)相信自己的最佳判斷。”

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

          1.5 第一個(gè)程序

          雖然交互式環(huán)境對(duì)于一次運(yùn)行一條 Python指令很好,但要編寫完整的Python程序,就需要在文件編輯器中輸入指令?!拔募庉嬈鳌鳖愃朴贜otepad或TextMate這樣的文本編輯器,它有一些針對(duì)輸入源代碼的特殊功能。要在IDLE中打開文件編輯器,請(qǐng)選擇FileNew ?File。

          出現(xiàn)的窗口中應(yīng)該包含一個(gè)光標(biāo),等待你輸入,但它與交互式環(huán)境不同。在交互式環(huán)境中,按下回車,就會(huì)執(zhí)行Python指令。文件編輯器允許輸入許多指令,保存為文件,并運(yùn)行該程序。下面是區(qū)別這兩者的方法:

          • 交互式環(huán)境窗口總是有>>>提示符。
          • 文件編輯器窗口沒有>>>提示符。

          現(xiàn)在是創(chuàng)建第一個(gè)程序的時(shí)候了!在文件編輯器窗口打開后,輸入以下內(nèi)容:

          ? # This program says hello and asks for my name.
          ? print('Hello world!')
           print('What is your name?') # ask for their name
          ? myName = input()
          ? print('It is good to meet you, ' + myName)
          ? print('The length of your name is:')
           print(len(myName))
          ? print('What is your age?') # ask for their age
           myAge = input()
           print('You will be ' + str(int(myAge) + 1) + ' in a year.')

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

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

          在保存文件后,讓我們來運(yùn)行程序。選擇Run?Run Module,或按下F5鍵。程序?qū)⒃诮换ナ江h(huán)境窗口中運(yùn)行,該窗口是首次啟動(dòng)IDLE時(shí)出現(xiàn)的。記住,必須在文件編輯器窗口中按F5,而不是在交互式環(huán)境窗口中。在程序要求輸入時(shí),輸入你的名字。在交互式環(huán)境中,程序輸出應(yīng)該看起來像這樣:

          Python 3.3.2 (v3.3.2:d047928ae3f6, May 16 2013, 00:06:53) [MSC v.1600 64 bit
          (AMD64)] on win32
          Type "copyright", "credits" or "license()" for more information.
          >>> ================================ RESTART ================================
          >>>
          Hello world!
          What is your name?
          Al
          It is good to meet you, Al
          The length of your name is:
          2
          What is your age?
          4
          You will be 5 in a year.
          >>>

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

          可以通過點(diǎn)擊窗口上部的X,關(guān)閉文件編輯器。要重新加載一個(gè)保存了的程序,就在菜單中選擇File?Open。現(xiàn)在請(qǐng)這樣做,在出現(xiàn)的窗口中選擇hello.py,并點(diǎn)擊“Open”按鈕。前面保存的程序hello.py應(yīng)該在文件編輯器窗口中打開。

          1.6 程序剖析

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

          1.6.1 注釋

          下面這行稱為“注釋”。

          ? # This program says hello and asks for my name. 

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

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

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

          1.6.2 print()函數(shù)

          print()函數(shù)將括號(hào)內(nèi)的字符串顯示在屏幕上。

          ? print('Hello world!')
           print('What is your name?') # ask for their name

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

          也可以用這個(gè)函數(shù)在屏幕上打印出空行,只要調(diào)用print()就可以了,括號(hào)內(nèi)沒有任何東西。

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

          1.6.3 input()函數(shù)

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

          ? myName = input()

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

          你可以認(rèn)為input()函數(shù)調(diào)用是一個(gè)表達(dá)式,它求值為用戶輸入的任何字符串。如果用戶輸入'Al',那么該表達(dá)式就求值為myName = 'Al'。

          1.6.4 打印用戶的名字

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

          ? print('It is good to meet you, ' + myName) 

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

          1.6.5 len()函數(shù)

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

          ? print('The length of your name is:')
           print(len(myName))

          在交互式環(huán)境中輸入以下內(nèi)容試一試:

          >>> len('hello')
          5
          >>> len('My very energetic monster just scarfed nachos.')
          46
          >>> len('')
          0

          就像這些例子,len(myName)求值為一個(gè)整數(shù)。然后它被傳遞給print(),在屏幕上顯示。請(qǐng)注意,print()允許傳入一個(gè)整型值或字符串。但如果在交互式環(huán)境中輸入以下內(nèi)容,就會(huì)報(bào)錯(cuò):

           >>> print('I am ' + 29 + ' years old.')
          Traceback (most recent call last):
          File "<pyshell#6>", line 1, in <module>
          print('I am ' + 29 + ' years old.')
          TypeError: Can't convert 'int' object to str implicitly

          導(dǎo)致錯(cuò)誤的原因不是print()函數(shù),而是你試圖傳遞給print()的表達(dá)式。如果在交互式環(huán)境中單獨(dú)輸入這個(gè)表達(dá)式,也會(huì)得到同樣的錯(cuò)誤。

          >>> 'I am ' + 29 + ' years old.'
          Traceback (most recent call last):
          File "<pyshell#7>", line 1, in <module>
          'I am ' + 29 + ' years old.'
          TypeError: Can't convert 'int' object to str implicitly

          報(bào)錯(cuò)是因?yàn)?,只能?操作符加兩個(gè)整數(shù),或連接兩個(gè)字符串。不能讓一個(gè)整數(shù)和一個(gè)字符串相加,因?yàn)檫@不符合Python的語法??梢允褂米址姹镜恼麛?shù),修復(fù)這個(gè)錯(cuò)誤。這在下一節(jié)中解釋。

          1.6.6 str()、int()和float()函數(shù)

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

          >>> str(29)
          '29'
          >>> print('I am ' + str(29) + ' years old.')
          I am 29 years old.

          因?yàn)閟tr(29)求值為’29’,所以表達(dá)式'I am ' + str(29) + ' years old.'求值為'I am ' + '29' + ' years old.',它又求值為'I am 29 years old.'。這就是傳遞給print()函數(shù)的值。

          str()、int()和float()函數(shù)將分別求值為傳入值的字符串、整數(shù)和浮點(diǎn)數(shù)形式。請(qǐng)嘗試用這些函數(shù)在交互式環(huán)境中轉(zhuǎn)換一些值,看看會(huì)發(fā)生什么。

          >>> str(0)
          '0'
          >>> str(-3.14)
          '-3.14'
          >>> int('42')
          42
          >>> int('-99')
          -99
          >>> int(1.25)
          1
          >>> int(1.99)
          1
          >>> float('3.14')
          3.14
          >>> float(10)
          10.0

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

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

          >>> spam = input()
          101
          >>> spam
          '101'

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

          >>> spam = int(spam)
          >>> spam
          101

          現(xiàn)在你應(yīng)該能將spam變量作為整數(shù),而不是字符串使用。

          >>> spam * 10 / 5
          202.0

          請(qǐng)注意,如果你將一個(gè)不能求值為整數(shù)的值傳遞給int(),Python將顯示出錯(cuò)信息。

          >>> int('99.99')
          Traceback (most recent call last):
          File "<pyshell#18>", line 1, in <module>
          int('99.99')
          ValueError: invalid literal for int() with base 10: '99.99'
          >>> int('twelve')
          Traceback (most recent call last):
          File "<pyshell#19>", line 1, in <module>
          int('twelve')
          ValueError: invalid literal for int() with base 10: 'twelve'

          如果需要對(duì)浮點(diǎn)數(shù)進(jìn)行取整運(yùn)算,也可以用int()函數(shù)。

          >>> int(7.7)
          7
          >>> int(7.7) + 1
          8

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

          ? print('What is your age?') # ask for their age
           myAge = input()
           print('You will be ' + str(int(myAge) + 1) + ' in a year.')

          myAge變量包含了input()函數(shù)返回的值。因?yàn)閕nput()函數(shù)總是返回一個(gè)字符串(即使用戶輸入的是數(shù)字),所以你可以使用int(myAge)返回字符串的整型值。這個(gè)整型值隨后在表達(dá)式int(myAge) + 1中與1相加。

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

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

          文本和數(shù)字相等判斷

          雖然數(shù)字的字符串值被認(rèn)為與整型值和浮點(diǎn)型值完全不同,但整型值可以與浮點(diǎn)值相等。

          >>> 42 == '42'
          False
          >>> 42 == 42.0
          True
          >>> 42.0 == 0042.000
          True

          Python進(jìn)行這種區(qū)分,因?yàn)樽址俏谋?,而整型值和浮點(diǎn)型都是數(shù)字。

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

          1.7 小結(jié)

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

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

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

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

          本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
          打開APP,閱讀全文并永久保存 查看更多類似文章
          猜你喜歡
          類似文章
          Python運(yùn)行的17個(gè)時(shí)新手常見錯(cuò)誤小結(jié)-
          Python基礎(chǔ)知識(shí)自學(xué)整理1
          收藏:17個(gè)新手常見的Python運(yùn)行時(shí)錯(cuò)誤
          17個(gè)新手常見錯(cuò)誤,送給初學(xué)Python的你!
          最基礎(chǔ)的Python知識(shí),學(xué)會(huì)這些已足夠你開始寫Python代碼了
          PEP 8
          更多類似文章 >>
          生活服務(wù)
          分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
          綁定賬號(hào)成功
          后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
          如果VIP功能使用有故障,
          可點(diǎn)擊這里聯(lián)系客服!

          聯(lián)系客服