<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 功能強大 支持多語言、二開方便! 廣告
                數據類型已經學的差不多了,但是,到現在為止我們還不能真正的寫程序,這就好比小學生學習寫作一樣,到目前為止僅僅學會了一些詞語,還不知道如何造句子。從現在開始就學習如何造句子了。 在編程語言中,句子被稱之為“語句”, ## [](https://github.com/qiwsir/StarterLearningPython/blob/master/121.md#什么是語句)什么是語句 事實上,前面已經用過語句了,最典型的那句:`print "Hello, World"`就是語句。 為了能夠嚴謹地闡述這個概念,抄一段[維基百科中的詞條:命令式編程](http://zh.wikipedia.org/wiki/%E6%8C%87%E4%BB%A4%E5%BC%8F%E7%B7%A8%E7%A8%8B) > 命令式編程(英語:Imperative programming),是一種描述電腦所需作出的行為的編程范型。幾乎所有電腦的硬件工作都是指令式的;幾乎所有電腦的硬件都是設計來運行機器碼,使用指令式的風格來寫的。較高級的指令式編程語言使用變量和更復雜的語句,但仍依從相同的范型。 > > 運算語句一般來說都表現了在存儲器內的數據進行運算的行為,然后將結果存入存儲器中以便日后使用。高級命令式編程語言更能處理復雜的表達式,可能會產生四則運算和函數計算的結合。 一般所有高級語言,都包含如下語句,Python也不例外: * 循環語句:容許一些語句反復運行數次。循環可依據一個默認的數目來決定運行這些語句的次數;或反復運行它們,直至某些條件改變。 * 條件語句:容許僅當某些條件成立時才運行某個區塊。否則,這個區塊中的語句會略去,然后按區塊后的語句繼續運行。 * 無條件分支語句容許運行順序轉移到程序的其他部分之中。包括跳躍(在很多語言中稱為Goto)、副程序和Procedure等。 循環、條件分支和無條件分支都是控制流程。 當然,python中的語句還是有python特別之處的(別的語言中,也會有自己的特色)。下面就開始娓娓道來。 ## [](https://github.com/qiwsir/StarterLearningPython/blob/master/121.md#print)print 在python2.x中,print是一個語句,但是在python3.x中它是一個函數了。這點請注意。不過,這里所使用的還是python2.x。 > 為什么不用python3.x?這個問題在開始就回答過。但是還有朋友問。重復回答:因為現在很多工程項目都是python2.x,python3.x相對python2.x有不完全兼容的地方。學python的目的就是要在真實的工程項目中使用,理所應當要學python2.x。此外,學會了python2.x,將來過渡到python3.x,只需要注意一些細節即可。 print發起的語句,在程序中主要是將某些東西打印出來,還記得在講解字符串的時候,專門講述了字符串的格式化輸出嗎?那就是用來print的。 ~~~ >>> print "hello, world" hello, world >>> print "hello","world" hello world ~~~ 請仔細觀察,上面兩個print語句的差別。第一個打印的是"hello, world",包括其中的逗號和空格,是一個完整的字符串。第二個打印的是兩個字符串,一個是"hello",另外一個是"world",兩個字符串之間用逗號分隔。 本來,在print語句中,字符串后面會接一個`\n`符號。即換行。但是,如果要在一個字符串后面跟著逗號,那么換行就取消了,意味著兩個字符串"hello","world"打印在同一行。 或許現在體現的還不時很明顯,如果換一個方法,就顯示出來了。(下面用到了一個被稱之為循環的語句,下一節會重點介紹。 ~~~ >>> for i in [1,2,3,4,5]: ... print i ... 1 2 3 4 5 ~~~ 這個循環的意思就是要從列表中依次取出每個元素,然后賦值給變量i,并用print語句打印打出來。在變量i后面沒有任何符號,每打印一個,就換行,再打印另外一個。 下面的方式就跟上面的有點區別了。 ~~~ >>> for i in [1,2,3,4,5]: ... print i , ... 1 2 3 4 5 ~~~ 就是在print語句的最后加了一個逗號,打印出來的就在一行了。 print語句經常用在調試程序的過程,讓我們能夠知道程序在執行過程中產生的結果。 ## [](https://github.com/qiwsir/StarterLearningPython/blob/master/121.md#import)import 在[《常用數學函數和運算優先級》](https://github.com/qiwsir/StarterLearningPython/blob/master/104.md)中,曾經用到過一個math模塊,它能提供很多數學函數,但是這些函數不是python的內建函數,是math模塊的,所以,要用import引用這個模塊。 這種用import引入模塊的方法,是python編程經常用到的。引用方法有如下幾種: ~~~ >>> import math >>> math.pow(3,2) 9.0 ~~~ 這是常用的一種方式,而且非常明確,`math.pow(3,2)`就明確顯示了,pow()函數是math模塊里的。可以說這是一種可讀性非常好的引用方式,并且不同模塊的同名函數不會產生沖突。 ~~~ >>> from math import pow >>> pow(3,2) 9.0 ~~~ 這種方法就有點偷懶了,不過也不難理解,從字面意思就知道pow()函數來自于math模塊。在后續使用的時候,只需要直接使用`pow()`即可,不需要在前面寫上模塊名稱了。這種引用方法,比較適合于引入模塊較少的時候。如果引入模塊多了,可讀性就下降了,會不知道那個函數來自那個模塊。 ~~~ >>> from math import pow as pingfang >>> pingfang(3,2) 9.0 ~~~ 這是在前面那種方式基礎上的發展,將從某個模塊引入的函數重命名,比如講pow充命名為pingfang,然后使用`pingfang()`就相當于在使用`pow()`了。 如果要引入多個函數,可以這樣做: ~~~ >>> from math import pow, e, pi >>> pow(e,pi) 23.140692632779263 ~~~ 引入了math模塊里面的pow,e,pi,pow()是一個乘方函數,e,就是那個歐拉數;pi就是π. > e,作為數學常數,是自然對數函數的底數。有時稱它為歐拉數(Euler's number),以瑞士數學家歐拉命名;也有個較鮮見的名字納皮爾常數,以紀念蘇格蘭數學家約翰·納皮爾引進對數。它是一個無限不循環小數。e = 2.71828182845904523536(《維基百科》) > > e的π次方,是一個數學常數。與e和π一樣,它是一個超越數。這個常數在希爾伯特第七問題中曾提到過。(《維基百科》) ~~~ >>> from math import * >>> pow(3,2) 9.0 >>> sqrt(9) 3.0 ~~~ 這種引入方式是最貪圖省事的了,一下將math中的所有函數都引過來了。不過,這種方式的結果是讓可讀性更降低了。僅適用于模塊中的函數比較少的時候,并且在程序中應用比較頻繁。 在這里,我們用math模塊為例,引入其中的函數。事實上,不僅函數可以引入,模塊中還可以包括常數等,都可以引入。在編程中,模塊中可以包括各樣的對象,都可以引入。 ## [](https://github.com/qiwsir/StarterLearningPython/blob/master/121.md#賦值語句)賦值語句 對于賦值語句,應該不陌生,在前面已經頻繁使用了,如`a = 3`這樣的,就是將一個整數賦給了變量。 > 編程中的“=”和數學中的“=”是完全不同的。在編程語言中,“=”表示賦值過程。 除了那種最簡單的賦值之外,還可以這么干: ~~~ >>> x, y, z = 1, "python", ["hello", "world"] >>> x 1 >>> y 'python' >>> z ['hello', 'world'] ~~~ 這里就一一對應賦值了。如果把幾個值賦給一個,可以嗎? ~~~ >>> a = "itdiffer.com", "python" >>> a ('itdiffer.com', 'python') ~~~ 原來是將右邊的兩個值裝入了一個元組,然后將元組賦給了變量a。這個python太聰明了。 在python的賦值語句中,還有一個更聰明的,它一出場,簡直是讓一些已經學習過某種其它語言的人亮瞎眼。 有兩個變量,其中`a = 2`,`b = 9`。現在想讓這兩個變量的值對調,即最終是`a = 9`,`b = 2`. 這是一個簡單而經典的題目。在很多編程語言中,是這么處理的: ~~~ temp = a; a = b; b = temp; ~~~ 這么做的那些編程語言,變量就如同一個盒子,值就如同放到盒子里面的東西。如果要實現對調,必須在找一個盒子,將a盒子里面的東西(數字2)拿到那個臨時盒子(temp)中,這樣a盒子就空了,然后將b盒子中的東西拿(數字9)拿到a盒子中(a = b),完成這步之后,b盒子是空的了,最后將臨時盒子里面的那個數字2拿到b盒子中。這就實現了兩個變量值得對調。 太啰嗦了。 python只要一行就完成了。 ~~~ >>> a = 2 >>> b = 9 >>> a, b = b, a >>> a 9 >>> b 2 ~~~ `a, b = b, a`就實現了數值對調,多么神奇。之所以神奇,就是因為我前面已經數次提到的python中變量和數據對象的關系。變量相當于貼在對象上的標簽。這個操作只不過是將標簽換個位置,就分別指向了不同的數據對象。 還有一種賦值方式,被稱為“鏈式賦值” ~~~ >>> m = n = "I use python" >>> print m,n I use python I use python ~~~ 用這種方式,實現了一次性對兩個變量賦值,并且值相同。 ~~~ >>> id(m) 3072659528L >>> id(n) 3072659528L ~~~ 用`id()`來檢查一下,發現兩個變量所指向的是同一個對象。 另外,還有一種判斷方法,來檢查兩個變量所指向的值是否是同一個(注意,同一個和相等是有差別的。在編程中,同一個就是`id()`的結果一樣。 ~~~ >>> m is n True ~~~ 這是在檢查m和n分別指向的對象是否是同一個,True說明是同一個。 ~~~ >>> a = "I use python" >>> b = a >>> a is b True ~~~ 這是跟上面鏈式賦值等效的。 但是: ~~~ >>> b = "I use python" >>> a is b False >>> id(a) 3072659608L >>> id(b) 3072659568L >>> a == b True ~~~ 看出其中的端倪了嗎?這次a、b兩個變量雖然相等,但不是指向同一個對象。 還有一種賦值形式,如果從數學的角度看,是不可思議的,如:`x = x + 1`,在數學中,這個等式是不成立的。因為數學中的“=”是等于的含義,但是在編程語言中,它成立,因為"="是賦值的含義,即將變量x增加1之后,再把得到的結果賦值變量x. 這種變量自己變化之后將結果再賦值給自己的形式,稱之為“增量賦值”。+、-、*、/、%都可以實現這種操作。 為了讓這個操作寫起來省點事(要寫兩遍同樣一個變量),可以寫成:`x += 1` ~~~ >>> x = 9 >>> x += 1 >>> x 10 ~~~ 除了數字,字符串進行增量賦值,在實際中也很有價值。 ~~~ >>> m = "py" >>> m += "th" >>> m 'pyth' >>> m += "on" >>> m 'python' ~~~
                  <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>

                              哎呀哎呀视频在线观看