<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # 第二章 變量,表達式,語句 編程語言最強大的功能就是操作變量。變量就是一個有值的代號。 ## 2.1 賦值語句 賦值語句的作用是創建一個新的變量,并且賦值給這個變量: ```py >>> message = 'And now for something completely different' >>> n = 17 >>> pi = 3.141592653589793 ``` 上面就是三個賦值語句的例子。第一個是把一個字符串復制給名叫 message 的新變量;第二個將 n 賦值為整數 17;第三個把圓周率的一個近似值賦給了 pi 這個變量。 平常大家在紙上對變量賦值的方法就是寫下名字,然后一個箭頭指向它的值。這種圖解叫做狀態圖,因為它能指明各個變量存儲的是什么內容。下圖就展示了上面例子中賦值語句的結果。 ________________________________________ ![Figure 2.1: State diagram.](http://7xnq2o.com1.z0.glb.clouddn.com/ThinkPython2.1.png) Figure 2.1: State diagram. ________________________________________ ## 2.2 變量名稱 編程的人總得給變量起個有一定意義的名字才能記得住,一般情況就用名字來表示這個變量的用途了。 變量名稱你隨便起多長都可以的。包含字母或者數字都行,但是不能用數字來開頭。大寫字母也能用,不過還是建議都用小寫字母來給變量命名,這個比較傳統哈。 變量名里面可以有下劃線 _,一般在多個單詞組成的變量名里面往往用到下劃線,比如 your_name 等等。 你要是給變量起名不合規則,就會出現語法錯誤提示了: ```py >>> 76trombones = 'big parade' SyntaxError: invalid syntax >>> more@ = 1000000 SyntaxError: invalid syntax >>> class = 'Advanced Theoretical Zymurgy' SyntaxError: invalid syntax ``` 第一個數字開頭所以不合規則,第二個有非法字符@,第三個這個 class 咋不行呢?好奇吧? 因為 class 是 Python 里面的一個關鍵詞啦。解釋器要用關鍵詞來識別程序的結構,這些關鍵詞是不能用來做變量名的。 以下是 Python3 的關鍵詞哈: * False class finally is * return None continue for lambda * try True def from nonlocal * while and del global not * with as elif if or * yield assert else import pass * break except in raise 你不用去記憶這些哈。因為一般大多數的開發環境里面,關鍵詞都會有區別于普通代碼的顏色提示你,你要是用他們做變量名了,一看就會知道的。 ## 2.3 表達式和語句 表達式是數值,變量和操作符的組合。單個值本身也被當作一個表達式,變量也是如此,下面這些例子都是一些正確表達式: ```py >>> 42 42 >>> n 17 >>> n + 25 42 ``` 當你在提示符后面敲出一個表達式,解釋器就判斷一下,他會找到這個表達式的值。在本節的例子中,n 的值是 17,所以 n+25 就是 42 了。 語句是一組具有某些效果的代碼,比如創建變量,或者顯示值。 ```py >>> n = 17 >>> print(n) ``` 上面第一個就是賦值語句,給 n 賦值。第二行是顯示 n 的值。 輸入語句的時候,解釋器會執行它,就是會按照語句所說的去做。一般語句是沒有值的。 ## 2.4 腳本模式 以上我們一直在用 Python 的交互模式,就是直接咱們人跟解釋器來交互。開始學的時候這樣挺好的,但如果你要想一次運行多行代碼,這樣就很不方便了。 所以就有另一種選擇了,把代碼保存成腳本,然后用腳本模式讓解釋器來運行這些腳本。通常 Python 腳本文件的擴展名是.py。 如果你知道怎么創建和運行腳本,那就盡管在自己電腦上嘗試好了。否則我就建議你還是用 PythonAnywhere。關于腳本模式的介紹我放到網上了,打開[這個鏈接](http://tinyurl.com/thinkpython2e)去看下哈。 Python 兩種模式都支持,所以你可以先用交互模式做點測試,然后再寫成腳本。但是兩種模式之間有些區別的,所以可能也挺麻煩。 舉個例子哈,比如咱們把 Python 當計算器用,你輸入以下內容: ```py >>> miles = 26.2 >>> miles * 1.61 42.182 ``` 第一行給 miles 這個變量賦初值(譯者注:26.2 英里是馬拉松比賽全程長度),但是看著沒啥效果。第二行是一個表達式,解釋器會計算這個表達式,然后把結果輸出。結果就是把馬拉松全程長度從英里換算成公里,答案是 42 公里哈。 不過你要是直接把這些代碼存成腳本然后運行,是啥都看不到的,沒有輸出。在腳本模式表達式是沒有明顯效果的。Python 確實會計算這些表達式,但不顯示結果,想看到結果你就得告訴他輸出一下: ```py miles = 26.2 print(miles * 1.61) ``` 這種情況開始還挺讓人混亂的。 腳本一般都是包含了一系列的語句。如果語句超過一條,每個語句執行的時候都會顯示結果。比如下面這個: ```py print(1) x = 2 print(x) ``` produces the output 輸出的結果如下 ```py 1 2 ``` 賦值語句是不會有任何輸出的。 檢查下你理解了沒哈,把下面這些語句輸入到 Python 解釋器,看看會發生什么: ```py 5 x = 5 x + 1 ``` 現在再把同樣的語句輸入到腳本中,然后用 Python 來運行一下。看看輸出是啥樣的?把腳本中的表達式修改一下,每一個都加一個打印語句再試試。 ## 2.5 運算符優先級 表達式可能會包含不止一個運算符,這些不同的運算先后次序就是運算符的優先級。對于數學運算符來說,Python 就遵循著數學上的規則。下面這個 PEMDAS、是用來記憶這些優先規則的好方法: * 括號內的內容最優先,大家可以用括號來強制某系表達式有限計算。所以 2\*\*(3-1)就等于 4 了,(1+1)\*\*(5-2)就是 2 的立方,等于 8。使用括號也有助于讓你的表達式讀起來更好理解,比如(minute * 100) / 60,這個也不影響計算結果,不過看起來易于理解。 * 除了括號,所有運算符中,乘方最優先,所以 1 + 2\*\*3 的結果是 9 而不是 27,2\*3\*\*2 結果是 18,而不是 36。 * 乘除運算比加減優先,譯者認為大家都知道了,這個我就不細說了。 * 同類運算符從左往右來進行,乘方除外。這個也不細說了,很簡單。 我不會花很大力氣來記憶這些運算符的優先級。如果我怕記不住弄錯了,就用括號來讓優先級明確一下就好。 ## 2.6 字符串操作 一般情況下,咱們不能對字符串進行數學運算的,即使字符串看上去像是數字也不行,所以以下這些都是非法操作: ```py '2'-'1' 'eggs'/'easy' 'third'*'a charm' ``` 不過+和*可以用在字符串上面。 +加號的意思就是字符串拼接了,會把兩個字符串拼到一起,如下所示: ```py >>> first = 'throat' >>> second = 'warbler' >>> first + second throatwarbler ``` 星號也就是乘法運算符也可以用在字符串上面,效果就是重復。比如'Spam'*3 結果就是 'SpamSpamSpam',重復了三次。需要注意的是字符串必須用整數去乘。 這種加法和乘法實際上就是拼接和重復的意思。 ## 2.7 注釋 程序會越來越龐大,也越復雜了,讀起來就會更難了。公式語言很密集,靠閱讀來理解代碼,總是很困難的。 為了解決閱讀的困難,咱們就可以添加一些筆記到代碼中,把程序的功能用自然語言來解釋一下。這種筆記就叫注釋了,使用井號#來開頭的: ```py # compute the percentage of the hour that has elapsed percentage = (minute * 100) / 60 ``` 注釋可以另起一行,也可以放到行末尾: ```py percentage = (minute * 100) / 60 # percentage of an hour ``` 井號#后面的內容都會被忽略,因此不會影響程序的運行結果。 一般注釋都是用來解釋代碼的一些不明顯的特性。一般情況下讀代碼的人應該能理解代碼的功能是什么,所以用注釋多是要解釋這樣做的目的是什么。 下面這個注釋就顯然是多余的,根本沒必要: ```py v = 5 # assign 5 to v ``` 下面這種注釋包含了重要信息,就很重要了: ```py v = 5 # velocity in meters/second. ``` 變量命名得當的話,就沒必要用太多注釋了,不過名字要是太長了,表達式讀起來也挺麻煩,所以就得權衡著來了。 ## 2.8 調試 程序一般會有三種錯誤:語法錯誤,運行錯誤和語義錯誤。區分這三種錯誤有助于更快速地追蹤錯誤。 * 語法錯誤 Syntax error: 語法是指程序的結構和規則。比如括號要成對用。如果你的程序有某個地方出現了語法錯誤,Python 會顯示出錯信息并退出,程序就不能運行了。最開始學習編程的這段時間,你遇到的最常見的估計就是這種情況。等你經驗多了,基本就犯的少了,而且也很容易發現了。 * 運行錯誤 Runtime error: 第二種錯誤就是運行錯誤,顯而易見了,就是直到運行的時候才會出現的錯誤。這種錯誤也被叫做異常,因為一般表示一些意外的尤其是比較糟糕的情況發生了。 * 語義錯誤 Semantic error: 第三種就是語義錯誤,顧名思義,是跟意義相關。這種錯誤是指你的程序運行沒問題,也不產生錯誤信息,但不能正確工作。程序可能做一些和設計目的不同的事情。發現語義錯誤特別不容易,需要你仔細回顧代碼和程序輸出,要搞清楚到底程序做了什么。 ## 2.9 Glossary 術語列表 variable: A name that refers to a value. 變量:有值的量。 >assignment: A statement that assigns a value to a variable. >賦值:給一個變量賦予值。 state diagram: A graphical representation of a set of variables and the values they refer to. >狀態圖:圖形化表征每個變量的值。 keyword: A reserved word that is used to parse a program; you cannot use keywords like if, def, and while as variable names. >關鍵詞:系統保留的用于解析程序的詞,不能用關鍵詞當做變量名。 operand: One of the values on which an operator operates. >運算數:運算符來進行運算操作的數值。 expression: A combination of variables, operators, and values that represents a single result. >表達式:一組變量、運算數的組合,會產生單值作為結果。 evaluate: To simplify an expression by performing the operations in order to yield a single value. >求解:把表達式所表示的運算計算出來,得到一個單獨的值。 statement: A section of code that represents a command or action. So far, the statements we have seen are assignments and print statements. >聲明:一組表示一種命令或者動作的代碼,目前我們了解的只有賦值語句和打印語句。 execute: To run a statement and do what it says. >運行:將一條語句進行運行。 interactive mode: A way of using the Python interpreter by typing code at the prompt. >交互模式:在提示符后輸入代碼,讓解釋器來運行代碼的模式。 script mode: A way of using the Python interpreter to read code from a script and run it. >腳本模式:將代碼保存成腳本文件,用解釋器運行的模式。 script: A program stored in a file. >腳本:程序以文本形式存成的文件。 order of operations: Rules governing the order in which expressions involving multiple operators and operands are evaluated. >運算符優先級:不同運算符和運算數進行計算的優先順序。 concatenate: To join two operands end-to-end. >拼接:把兩個運算對象相互連接到一起。 comment: Information in a program that is meant for other programmers (or anyone reading the source code) and has no effect on the execution of the program. >注釋:程序中用來解釋代碼含義和運行效果的備注信息,通常給閱讀代碼的人準備的。 syntax error: An error in a program that makes it impossible to parse (and therefore impossible to interpret). >語法錯誤:程序語法上的錯誤,導致程序不能被解釋器解譯,就不能運行了。 exception: An error that is detected while the program is running. >異常:程序運行的時候被探測到的錯誤。 semantics: The meaning of a program. >語義:程序的意義。 semantic error: An error in a program that makes it do something other than what the programmer intended. >語義錯誤:程序運行的結果和料想的不一樣,沒有完成設計的功能,而是干了點其他的事情。 ## 2.10 練習 ### 練習 1 像上一章一樣,按我建議的,不論學了什么新內容,你都試著在交互模式上故意犯點錯誤,看看會怎么樣。 * 我們都看到了 n=42 是可以的,那 42=n 怎么樣? * 再試試 x=y=1 呢? * 有的語言每個語句結尾都必須有個單引號或者分號,試試在 Python 句末放個會咋樣? * 句尾放個句號試試呢? * 數學上你可以把 x 和 y 相乘寫成 xy,Python 里面你這么試試看? ### 練習 2 把 Python 解釋器當做計算器來做下面的練習: 1. 球體體積是三分之四倍的圓周率乘以半徑立方,求半徑為 5 的球體體積。 2. 假如一本書的封面標價是 24.95 美元,書店打六折。第一本運費花費 3 美元,后續每增加一本的運費是 75 美分。問買 60 本一共得花多少錢呢? 3. 我早上六點五十二分出門離家,以 8:15 的節奏跑了一英里,又以 7:12 的節奏跑了三英里,然后又是 8:15 的節奏跑一英里,回到家吃飯是幾點?
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看