<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 功能強大 支持多語言、二開方便! 廣告
                print的一些基本用法,在前面的講述中也涉及一些,本講是在復習的基礎上,盡量再多點內容。 ## eval() 在print干事情之前,先看看這個東東。不是沒有用,因為說不定某些時候要用到。 ~~~ >>> help(eval) #這個是一招鮮,凡是不理解怎么用,就用這個看文檔 Help on built-in function eval in module __builtin__: eval(...) eval(source[, globals[, locals]]) -> value Evaluate the source in the context of globals and locals. The source may be a string representing a Python expression or a code object as returned by compile(). The globals must be a dictionary and locals can be any mapping, defaulting to the current globals and locals. If only globals is given, locals defaults to it. ~~~ 能看懂更好了,看不懂也沒有關系。看我寫的吧。哈哈。概括一下,eval()是把字符串中符合python表達式的東西計算出來。意思就是: ~~~ >>> 3+4 #這是一個表達式,python會根據計算法則計算出結果來 7 >>> "3+4" #這是一個字符串,python就不計算里面的內容了,雖然里面是一個符合python規范的表達式 '3+4' >>> eval("3+4") #這里就跟上面不一樣了,就把字符串里面的表達式計算出來了 7 ~~~ 下面再看一個字符串“相加”的例子: ~~~ >>> "qiwsir"+".github.io" 'qiwsir.github.io' >>> "'qiwsir'+'.github.io'"  #字符串里面,python是不會進行“計算”的 "'qiwsir'+'.github.io'" >>> eval("'qiwsir'+'.github.io'") #eval()做的事情完全不一樣,它會把字符串里面的計算出來 'qiwsir.github.io' ~~~ 順便再說一下另外一個跟eval()有點類似的函數:exec(),這個函數專門來執行字符串或文件里面的python語句。 ~~~ >>> exec "print 'hello, qiwsir'" hello, qiwsir >>> "print 'hello, qiwsir'" "print 'hello, qiwsir'" ~~~ ## print詳解 print命令在編程實踐中用的比較多,特別是要向看看程序運行到某個時候產生了什么結果了,必須用print來輸出,或者說,本講更寬泛地說,就要說明白把程序中得到的結果輸出問題。 比較簡單的輸出,前面已經涉及到過了: ~~~ >>> name = 'qiwsir' >>> room = 703 >>> website = 'qiwsir.github.io' >>> print "MY name is:%s\nMy room is:%d\nMy website is:%s"%(name,room,website) MY name is:qiwsir My room is:703 My website is:qiwsir.github.io ~~~ 其中,%s,%d就是占位符。 ~~~ >>> a = 3.1415926 >>> print "%d"%a #%d只能輸出整數,int類型 3 >>> print "%f"%a  #%f輸出浮點數 3.141593 >>> print "%.2f"%a #按照要求輸出小數位數 3.14 >>> print "%.9f"%a #如果要求的小數位數過多,后面就用0補全 3.141592600 >>> b = 3  >>> print "%4d"%b #如果是整數,這樣寫要求該整數占有四個位置,于是在前面增加三個空格 3 #而不是寫成0003的樣式 ~~~ 換一種范式,寫成這樣,就跟上面有點區別了。 ~~~ >>> import math #引入數學模塊 >>> print "PI=%f"%math.pi #默認,將圓周率打印成這個樣子 PI=3.141593 >>> print "PI=%10.3f"%math.pi #約束一下,這個的含義是整數部分加上小數點和小數部分共計10位,并且右對齊 PI= 3.142 >>> print "PI=%-10.3f"%math.pi #要求顯示的左對齊,其余跟上面一樣 PI=3.142 >>> print "PI=%06d"%int(math.pi) #整數部分的顯示,要求共6位,這樣前面用0補足了。 PI=000003 ~~~ 其實,跟對上面數字操作類似,對字符串也可以做一些約束輸出操作。看下面實驗,最好看官也試試。 ~~~ >>> website 'qiwsir.github.io' >>> print "%.3s"%website qiw >>> print "%.*s"%(3,website) qiw >>> print "%7.3s"%website qiw >>> print "%-7.3s"%website qiw ~~~ 總體上,跟對數字的輸出操作類似。不過,在實際的操作中,這些用的真的不是很多,至少在我這么多年的代碼生涯中,用到上面復雜操作的,就是現在給列位展示的時候,充其量用一用對float類型的數據輸出小數位數的操作,其它的輸出操作,以默認的那種方式居多。請看官在這里鄙夷我的無知吧。 行文到此,提醒列位,如果用python3的,請用print(),要加個括號。 print有一個特點,就是輸出的時候,每行后面都自動加上一個換行符號\n,這個在前面已經有所提及。 ~~~ >>>  website 'qiwsir.github.io' >>> for word in website.split("."): ... print word ... qiwsir github io >>> for word in website.split("."): ... print word, #注意,加了一個逗號,輸出形式就變化了吧。 ... qiwsir github io ~~~ ## %r是萬能的嗎? 我曾經說過,懶人改變世界,特別是在敲代碼的領域。于是就有人問了,前面一會兒是%s,一會兒是%d,麻煩,有沒有一個萬能的?于是網上就有人給出答案了,%r就是萬能的。看實驗: ~~~ >>> import math >>> print "PI=%r"%math.pi PI=3.141592653589793 >>> print "Pi=%r"%int(math.pi) Pi=3 ~~~ 真的是萬能呀!別著急,看看這個,你是不是就糊涂了? ~~~ >>> print "Pi=%s"%int(math.pi) Pi=3 ~~~ 當然,這樣就肯定出錯了: ~~~ >>> print "p=%d"%"pi" Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: %d format: a number is required, not str ~~~ 如果看到這里,看官有點糊涂是很正常的,特別是那個號稱萬能的%r和%s,怎么都能夠對原本屬于%d的進行正常輸出呢? 其實,不管是%r還是%s(%d)都是把做為整數的對象轉化為字符串輸出了,而不是輸出整數。但是%r和%s是有點區別的,本講對這個暫不做深入研究,只是說明這樣的對應:%s-->str();%r-->repr(),什么意思呢?就是說%s調用的是str()函數把對象轉化為str類型,而%r是調用了repr()將對象轉化為字符串。關于兩者的區別請參考:[Difference between?**str**?and?**repr**in Python](http://stackoverflow.com/questions/1436703/difference-between-str-and-repr-in-python),下面是一個簡單的例子,演示一下兩者區別: ~~~ >>> import datetime >>> today = datetime.date.today() >>> today datetime.date(2014, 8, 15) >>> str(today) '2014-08-15' >>> repr(today) 'datetime.date(2014, 8, 15)' ~~~ 最后要表達我的一個觀點,沒有什么萬能的,一切都是根據實際需要而定。 關于更多的輸出格式占位符的說明,這個頁面中有一個表格,可惜沒有找到中文的,如果看官找到中文的,請共享一下呀:[string formatting](https://docs.python.org/2/library/stdtypes.html#string-formatting) ## 再擴展 ~~~ >>> myinfo {'website': 'qiwsir.github.io', 'name': 'qiwsir', 'room': 703} >>> print "qiwsir is in %(room)d"%myinfo qiwsir is in 703 ~~~ 看官是否看明白上面的輸出了?有點意思。這樣的輸出算是對前面輸出的擴展了。 出了這個擴展之外,在輸出的時候,還可以用一個名曰:format的東西,這里面看不到%,但是多了{}。看實驗先: ~~~ >>> print "My name is {0} and I am in {1}".format("qiwsir",703) #將format后面的內容以此填充 My name is qiwsir and I am in 703 >>> "My website is {website}".format(website="qiwsir.github.io") #{}里面那個相當于一個變量了吧 'My website is qiwsir.github.io' ~~~ 看到這里,是不是感覺這個format有點意思?一點不輸給前面的輸出方式。據說,format會逐漸逐漸取代前面的。關于format,我計劃后面一講繼續。這里只是來一個引子,后面把用format輸出搞得多點。
                  <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>

                              哎呀哎呀视频在线观看