摘要:在干事情之前,先看看這個東東。行文到此,提醒列位,如果用的,請用,要加個括號。這樣的輸出算是對前面輸出的擴展了。據(jù)說,會逐漸逐漸取代前面的。恭請列為到我的上及時更新的內(nèi)容零基礎(chǔ)學
print的一些基本用法,在前面的講述中也涉及一些,本講是在復(fù)習的基礎(chǔ)上,盡量再多點內(nèi)容。
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.
能看懂更好了,看不懂也沒有關(guān)系。看我寫的吧。哈哈。概括一下,eval()是把字符串中符合python表達式的東西計算出來。意思就是:
>>> 3+4 #這是一個表達式,python會根據(jù)計算法則計算出結(jié)果來 7 >>> "3+4" #這是一個字符串,python就不計算里面的內(nèi)容了,雖然里面是一個符合python規(guī)范的表達式 "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()有點類似的函數(shù):exec(),這個函數(shù)專門來執(zhí)行字符串或文件里面的python語句。
>>> exec "print "hello, qiwsir"" hello, qiwsir >>> "print "hello, qiwsir"" "print "hello, qiwsir""print詳解
print命令在編程實踐中用的比較多,特別是要向看看程序運行到某個時候產(chǎn)生了什么結(jié)果了,必須用print來輸出,或者說,本講更寬泛地說,就要說明白把程序中得到的結(jié)果輸出問題。
比較簡單的輸出,前面已經(jīng)涉及到過了:
>>> name = "qiwsir" >>> room = 703 >>> website = "qiwsir.github.io" >>> print "MY name is:%s My room is:%d My 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只能輸出整數(shù),int類型 3 >>> print "%f"%a #%f輸出浮點數(shù) 3.141593 >>> print "%.2f"%a #按照要求輸出小數(shù)位數(shù) 3.14 >>> print "%.9f"%a #如果要求的小數(shù)位數(shù)過多,后面就用0補全 3.141592600 >>> b = 3 >>> print "%4d"%b #如果是整數(shù),這樣寫要求該整數(shù)占有四個位置,于是在前面增加三個空格 3 #而不是寫成0003的樣式
換一種范式,寫成這樣,就跟上面有點區(qū)別了。
>>> import math #引入數(shù)學模塊 >>> print "PI=%f"%math.pi #默認,將圓周率打印成這個樣子 PI=3.141593 >>> print "PI=%10.3f"%math.pi #約束一下,這個的含義是整數(shù)部分加上小數(shù)點和小數(shù)部分共計10位,并且右對齊 PI= 3.142 >>> print "PI=%-10.3f"%math.pi #要求顯示的左對齊,其余跟上面一樣 PI=3.142 >>> print "PI=%06d"%int(math.pi) #整數(shù)部分的顯示,要求共6位,這樣前面用0補足了。 PI=000003
其實,跟對上面數(shù)字操作類似,對字符串也可以做一些約束輸出操作。看下面實驗,最好看官也試試。
>>> website "qiwsir.github.io" >>> print "%.3s"%website qiw >>> print "%.*s"%(3,website) qiw >>> print "%7.3s"%website qiw >>> print "%-7.3s"%website qiw
總體上,跟對數(shù)字的輸出操作類似。不過,在實際的操作中,這些用的真的不是很多,至少在我這么多年的代碼生涯中,用到上面復(fù)雜操作的,就是現(xiàn)在給列位展示的時候,充其量用一用對float類型的數(shù)據(jù)輸出小數(shù)位數(shù)的操作,其它的輸出操作,以默認的那種方式居多。請看官在這里鄙夷我的無知吧。
行文到此,提醒列位,如果用python3的,請用print(),要加個括號。
print有一個特點,就是輸出的時候,每行后面都自動加上一個換行符號 ,這個在前面已經(jīng)有所提及。
>>> 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是萬能的嗎?
我曾經(jīng)說過,懶人改變世界,特別是在敲代碼的領(lǐng)域。于是就有人問了,前面一會兒是%s,一會兒是%d,麻煩,有沒有一個萬能的?于是網(wǎng)上就有人給出答案了,%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 "", line 1, in TypeError: %d format: a number is required, not str
如果看到這里,看官有點糊涂是很正常的,特別是那個號稱萬能的%r和%s,怎么都能夠?qū)υ緦儆?d的進行正常輸出呢?
其實,不管是%r還是%s(%d)都是把做為整數(shù)的對象轉(zhuǎn)化為字符串輸出了,而不是輸出整數(shù)。但是%r和%s是有點區(qū)別的,本講對這個暫不做深入研究,只是說明這樣的對應(yīng):%s-->str();%r-->repr(),什么意思呢?就是說%s調(diào)用的是str()函數(shù)把對象轉(zhuǎn)化為str類型,而%r是調(diào)用了repr()將對象轉(zhuǎn)化為字符串。關(guān)于兩者的區(qū)別請參考:Difference between str and repr in Python,下面是一個簡單的例子,演示一下兩者區(qū)別:
>>> import datetime >>> today = datetime.date.today() >>> today datetime.date(2014, 8, 15) >>> str(today) "2014-08-15" >>> repr(today) "datetime.date(2014, 8, 15)"
最后要表達我的一個觀點,沒有什么萬能的,一切都是根據(jù)實際需要而定。
關(guān)于更多的輸出格式占位符的說明,這個頁面中有一個表格,可惜沒有找到中文的,如果看官找到中文的,請共享一下呀: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后面的內(nèi)容以此填充 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有點意思?一點不輸給前面的輸出方式。據(jù)說,format會逐漸逐漸取代前面的。關(guān)于format,我計劃后面一講繼續(xù)。這里只是來一個引子,后面把用format輸出搞得多點。
恭請列為到我的github上及時更新的內(nèi)容:零基礎(chǔ)學python文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/37351.html
摘要:一般所有高級語言,都包含如下語句,也不例外循環(huán)語句容許一些語句反復(fù)運行數(shù)次。條件語句容許僅當某些條件成立時才運行某個區(qū)塊。無條件分支語句容許運行順序轉(zhuǎn)移到程序的其他部分之中。零基礎(chǔ)學我在上的文章,隨時更新修改。 一般編程的教材,都是要把所有的變量類型講完,然后才講語句。這種講法,其實不符合學習的特點。學習,就是要循序漸進的。在這點上,我可以很吹一通了,因為我做過教師,研究教育教學,算是...
摘要:在講述有關(guān)的時候,提到做游戲的事情后來這個事情一直沒有接續(xù)。現(xiàn)在就是開始做那個游戲的時候了。游戲過程描述程序運行起來,隨機在某個范圍內(nèi)選擇一個整數(shù)。我們現(xiàn)在做一個很小的程序,也是這樣來做。這個游戲還沒有完呢,即使用了循環(huán),后面還會繼續(xù)。 在講述有關(guān)list的時候,提到做游戲的事情,后來這個事情一直沒有接續(xù)。不是忘記了,是在想在哪個階段做最合適。經(jīng)過一段時間學習,看官已經(jīng)不是純粹小白了,...
摘要:我在這里將他寫的程序恭錄于此,單元李航同學不要見怪,如果李航同學認為此舉侵犯了自己的知識產(chǎn)權(quán),可以告知我,我馬上撤下此代碼。我用的是,在輸入指令上區(qū)別于李同學程序用變量接收了輸入的內(nèi)容。 while,翻譯成中文是當...的時候,這個單詞在英語中,常常用來做為時間狀語,while ... someone do somthing,這種類型的說法是有的。在python中,它也有這個含義,不過...
摘要:畫圈換一個說法就是循環(huán)。就相當于讓依次等于中的各個值。例找出以內(nèi)的能夠被整除的正整數(shù)。以上做了簡單分析,要實現(xiàn)流程,還需要細化一下。代碼代碼運行結(jié)果這里僅僅列舉一個簡單的例子,看官可以在這個例子基礎(chǔ)上深入打印某范圍內(nèi)的偶數(shù)奇數(shù)等。 畫圈?換一個說法就是循環(huán)。循環(huán),是高級語言編程中重要的工作。現(xiàn)實生活中,很多事情都是在循環(huán),日月更迭,斗轉(zhuǎn)星移,無不是循環(huán);王朝更迭,尋常百姓,也都是循環(huán)。...
摘要:關(guān)于元組,上一講中涉及到了這個名詞。元組是用圓括號括起來的,其中的元素之間用逗號隔開。使用而不是如同擁有一個隱含的語句,說明這一數(shù)據(jù)是常量。必須是不可變的。只有字符串整數(shù)或其它對安全的才可以用作。 關(guān)于元組,上一講中涉及到了這個名詞。本講完整地講述它。 先看一個例子: >>>#變量引用str >>> s = abc >>> s abc >>>#如果這樣寫,就會是... >>> t...
閱讀 2637·2023-04-26 02:17
閱讀 1610·2021-11-24 09:39
閱讀 1069·2021-11-18 13:13
閱讀 2597·2021-09-02 15:11
閱讀 2769·2019-08-30 15:48
閱讀 3405·2019-08-30 14:00
閱讀 2430·2019-08-29 13:43
閱讀 657·2019-08-29 13:07